หมายเหตุ: ไม่รองรับการสตรีมเสียงหลายห้อง AirPlay2: ใช้ shairport-sync สำหรับสิ่งนั้น
-
ติดตั้ง uxplay บนระบบ Linux ที่ใช้ Debian ด้วย " sudo apt install uxplay
"; บน FreeBSD ด้วย " sudo pkg install uxplay
" ยังมีให้บริการบนระบบที่ใช้ Arch ผ่าน AUR ตั้งแต่เวอร์ชัน 1.66 ตอนนี้ uxplay ได้รับการบรรจุในรูปแบบ RPM ด้วย Fedora 38 (" sudo dnf install uxplay
")
สำหรับการแจกแจงแบบอิง RPM อื่นๆ ซึ่งยังไม่ได้รวมแพ็กเกจ UxPlay ไว้ ขณะนี้ RPM "specfile" uxplay.spec มาพร้อมกับรุ่นล่าสุด (ดู "เนื้อหา") และยังสามารถพบได้ในไดเรกทอรีบนสุดของแหล่งที่มาของ UxPlay ดูส่วนการใช้ specfile นี้เพื่อสร้างแพ็คเกจ RPM ที่สามารถติดตั้งได้
หลังการติดตั้ง:
(บน Linux และ *BSD): หากไฟร์วอลล์ทำงานบนเซิร์ฟเวอร์ที่โฮสต์ UxPlay ตรวจสอบให้แน่ใจว่าพอร์ตเครือข่ายเริ่มต้น (UDP 5353) สำหรับการสืบค้น mDNS/DNS-SD เปิดอยู่ (ดูการแก้ไขปัญหาด้านล่างสำหรับรายละเอียดเพิ่มเติม) เปิด UDP สามพอร์ตและพอร์ต TCP สามพอร์ตสำหรับ Uxplay และใช้ตัวเลือก "uxplay -p " (ดู " man uxplay
" หรือ " uxplay -h
")
แม้ว่าคุณจะติดตั้งแพ็คเกจไบนารี uxplay ที่คอมไพล์ไว้ล่วงหน้าของการแจกจ่ายของคุณ คุณอาจต้องอ่านคำแนะนำด้านล่างสำหรับการรัน UxPlay เพื่อดูว่า แพ็คเกจปลั๊กอิน GStreamer ของการแจกจ่ายใดที่คุณควรติดตั้งด้วย
สำหรับโหมดเสียงเท่านั้น (Apple Music ฯลฯ) จะได้คุณภาพที่ดีที่สุดด้วยตัวเลือก "uxplay -async" แต่จะมีเวลาแฝง 2 วินาทีที่กำหนดโดย iOS
เพิ่มตัวเลือก UxPlay ที่คุณต้องการใช้เป็นค่าเริ่มต้นให้กับไฟล์เริ่มต้น ~/.uxplayrc
(ดู " man uxplay
" หรือ " uxplay -h
" สำหรับรูปแบบและตำแหน่งอื่นๆ ที่เป็นไปได้) โดยเฉพาะอย่างยิ่ง หากระบบของคุณใช้เสียง PipeWire หรือระบบวิดีโอ Wayland คุณอาจต้องการเพิ่ม "as pipewiresink" หรือ "vs waylandsink" เป็นค่าเริ่มต้นให้กับไฟล์ (เอาต์พุตจากคำสั่งเทอร์มินัล "ps waux | grep pulse" หรือ "pactl info" จะมี "pipewire" หากระบบ Linux/BSD ของคุณใช้)
บน Raspberry Pi: หากคุณใช้ Ubuntu 22.10 หรือเก่ากว่า GStreamer จะต้องได้รับการแพตช์เพื่อใช้การถอดรหัสวิดีโอด้วยฮาร์ดแวร์โดย Broadcom GPU (แนะนำเช่นกัน แต่เป็นทางเลือกสำหรับ Raspberry Pi OS (Bullseye): ใช้ตัวเลือก " uxplay -bt709
" หากคุณไม่ได้ใช้ แพทช์)
หากต้องการคอมไพล์ UxPlay ล่าสุดจากแหล่งที่มา (อย่างง่ายดาย) โปรดดูส่วนการรับ UxPlay
โปรเจ็กต์นี้เป็นเซิร์ฟเวอร์มิเรอร์ Unix AirPlay2 โอเพ่นซอร์ส GPLv3 สำหรับ Linux, macOS และ *BSD เริ่มแรกได้รับการพัฒนาโดย antimof โดยใช้โค้ดจาก RPiPlay ที่ใช้ OpenMAX ซึ่งได้มาจาก AirplayServer, shairplay และ playfair (ไซต์ antimof ไม่เกี่ยวข้องกับการพัฒนาอีกต่อไป แต่จะโพสต์การอัปเดตที่ดึงมาจากไซต์ UxPlay หลักใหม่เป็นระยะ)
UxPlay ได้รับการทดสอบบนหลายระบบ รวมถึง (เหนือสิ่งอื่นใด) Debian (10 "Buster", 11 "Bullseye", 12 "Bookworm"), Ubuntu (20.04 LTS, 22.04 LTS, 23.04 (รวมถึงอนุพันธ์ของ Ubuntu Linux Mint, Pop! _OS), Red Hat และโคลน (Fedora 38, Rocky Linux 9.2), openSUSE Leap 15.5, Mageia 9, OpenMandriva "ROME", PCLinuxOS, Arch Linux, Manjaro และควรทำงานบนระบบ Linux ใด ๆ รวมถึงทดสอบบน macOS Catalina และ Ventura (Intel) และ Sonoma (M2), FreeBSD 14.0, Windows 10 และ 11 (64) นิดหน่อย).
บน Raspberry Pi 4 รุ่น B ได้รับการทดสอบบน Raspberry Pi OS (Bullseye และ Bookworm) (32- และ 64- บิต), Ubuntu 22.04 LTS และ 23.04, Manjaro RPi4 23.02 และ (ไม่มีการถอดรหัสวิดีโอด้วยฮาร์ดแวร์) บน openSUSE 15.5 ทดสอบกับ Raspberry Pi Zero 2 W, 3 รุ่น B+ และตอนนี้ 5 แล้ว
การใช้งานหลักคือทำหน้าที่เหมือน AppleTV สำหรับการมิเรอร์หน้าจอ (พร้อมเสียง) ของไคลเอนต์ iOS/iPadOS/macOS (iPhone, iPod Touch, iPad, คอมพิวเตอร์ Mac) บนจอแสดงผลเซิร์ฟเวอร์ของโฮสต์ที่ใช้ Linux, macOS หรือยูนิกซ์อื่น ๆ (และตอนนี้ก็ยังมี Microsoft Windows ด้วย) UxPlay รองรับโปรโตคอล AirPlay2 ของ Apple โดยใช้ "Legacy Protocol" แต่คุณสมบัติบางอย่างขาดหายไป (รายละเอียดสิ่งที่เป็นที่รู้จักต่อสาธารณะเกี่ยวกับโปรโตคอล AirPlay 2 ของ Apple สามารถพบได้ที่นี่ ที่นี่ และ ที่นี่ โปรดดู pyatv ซึ่งอาจเป็นแหล่งข้อมูลสำหรับการเพิ่มโปรโตคอลสมัยใหม่) แม้ว่าจะไม่มีการรับประกันว่า iOS ในอนาคตจะรองรับ "Legacy Protocol ต่อไป" " iOS 17 ยังคงรองรับต่อไป
เซิร์ฟเวอร์ UxPlay และไคลเอนต์จะต้องอยู่บนเครือข่ายท้องถิ่นเดียวกัน ซึ่ง เซิร์ฟเวอร์ Bonjour/Zeroconf mDNS/DNS-SD ทำงานอยู่ด้วย (เฉพาะบริการ DNS-SD "Service Discovery" เท่านั้นที่จำเป็นอย่างยิ่ง ไม่จำเป็นที่ เครือข่ายท้องถิ่นยังเป็นประเภทที่ใช้ mDNS ".local" ด้วย) บนเซิร์ฟเวอร์ Linux และ BSD Unix โดยปกติ Avahi จะให้บริการผ่านบริการ avahi-daemon และรวมอยู่ในลีนุกซ์รุ่นส่วนใหญ่ (บริการนี้สามารถให้บริการโดยเซิร์ฟเวอร์ macOS, iOS หรือ Windows ได้เช่นกัน)
การเชื่อมต่อกับเซิร์ฟเวอร์ UxPlay โดยไคลเอนต์ iOS/MacOS สามารถเริ่มต้นได้ทั้งในโหมด AirPlay Mirror (ซึ่งจะสตรีมเสียง AAC ที่ถูกบีบอัดแบบ lossless ขณะมิเรอร์หน้าจอไคลเอนต์ หรือในโหมด AirPlay Audio สำรองซึ่งจะสตรีมเสียง Apple Lossless (ALAC) โดยไม่ต้องทำการมิเรอร์หน้าจอ ในโหมด เสียง ข้อมูลเมตาจะแสดงในเทอร์มินัล uxplay หากใช้ตัวเลือก UxPlay -ca <name>
หน้าปกที่เกี่ยวข้องจะถูกส่งออกไปยัง <name>
ที่อัปเดตเป็นระยะ ๆ ด้วย และสามารถดูได้ด้วยโปรแกรมดูกราฟิก (โหลดซ้ำ) ที่คุณเลือก การสลับระหว่าง โหมดมิเรอร์ และ โหมดเสียง ระหว่างการเชื่อมต่อที่ใช้งานอยู่สามารถทำได้: ใน โหมด มิเรอร์ ให้หยุดการมิเรอร์ (หรือปิดหน้าต่างมิเรอร์) และเริ่ม การเชื่อมต่อโหมด เสียง สลับ กลับโดยเริ่ม การเชื่อมต่อโหมด Mirror ; การแสดงภาพหน้าปกจะหยุด/รีสตาร์ทเมื่อคุณออก/เข้าสู่ โหมด เสียง อีกครั้ง
โปรดทราบว่า Apple video-DRM (ที่พบในเนื้อหา "แอป Apple TV" บนไคลเอนต์) ไม่สามารถถอดรหัสโดย UxPlay และไม่สามารถรับชมแอป Apple TV ได้โดยใช้โหมด AirPlay Mirror ของ UxPlay (เฉพาะเสียงที่ไม่มีการป้องกันเท่านั้นที่จะถูกสตรีมใน AAC ) แต่ทั้งเนื้อหาวิดีโอและเสียงจากแอปที่ไม่มี DRM เช่น "แอป YouTube" จะถูกสตรีมโดย UxPlay ในโหมด Mirror
เนื่องจากปัจจุบัน UxPlay ไม่รองรับการสตรีมวิดีโอ AirPlay ที่ไม่ใช่มิเรอร์ (โดยที่ไคลเอนต์ควบคุมเว็บเซิร์ฟเวอร์บนเซิร์ฟเวอร์ AirPlay ที่รับเนื้อหา HLS โดยตรงเพื่อหลีกเลี่ยงการถอดรหัสและเข้ารหัสใหม่โดยไคลเอนต์) โดยใช้ไอคอนสำหรับวิดีโอ AirPlay ใน แอปต่างๆ เช่น แอป YouTube จะส่งเฉพาะเสียง (ในรูปแบบ ALAC แบบไม่สูญเสียข้อมูล) โดยไม่มีวิดีโอประกอบ (มีแผนจะรองรับวิดีโอ HLS ใน UxPlay รุ่นต่อๆ ไป)
UxPlay ใช้ "ปลั๊กอิน" ของ GStreamer ในการแสดงเสียงและวิดีโอ ซึ่งหมายความว่าวิดีโอและเสียงได้รับการสนับสนุน "นอกกรอบ" โดยใช้ตัวเลือกปลั๊กอิน AirPlay สตรีมวิดีโอในรูปแบบ h264: การถอดรหัส gstreamer เป็นแบบไม่เชื่อเรื่องปลั๊กอิน และใช้ตัวถอดรหัส h264 ของฮาร์ดแวร์ GPU แบบเร่ง หากมี ถ้าไม่เช่นนั้น จะใช้การถอดรหัสซอฟต์แวร์
VAAPI สำหรับกราฟิกรวมของ Intel และ AMD, NVIDIA พร้อมไดรเวอร์โอเพ่นซอร์ส "Nouveau"
เมื่อใช้ Intel หรือ AMD GPU การถอดรหัสฮาร์ดแวร์ด้วยปลั๊กอิน gstreamer VAAPI แบบโอเพ่นซอร์สจะดีกว่า โดยหลักการแล้วไดรเวอร์ "Nouveau" แบบโอเพ่นซอร์สสำหรับกราฟิก NVIDIA ก็ได้รับการสนับสนุนเช่นกัน ดูที่นี่ แต่จำเป็นต้องเสริม VAAPI ด้วยเฟิร์มแวร์ที่แยกมาจากไดรเวอร์ NVIDIA ที่เป็นกรรมสิทธิ์
NVIDIA พร้อมไดรเวอร์ที่เป็นกรรมสิทธิ์
ปลั๊กอิน nvh264dec
(รวมอยู่ใน gstreamer1.0-plugins-bad ตั้งแต่ GStreamer-1.18.0) สามารถใช้สำหรับการถอดรหัสวิดีโอแบบเร่งบน NVIDIA GPU หลังจากติดตั้งไดรเวอร์ CUDA ของ NVIDIA libcuda.so
แล้ว สำหรับ GStreamer-1.16.3 หรือเก่ากว่า ปลั๊กอินจะเรียกว่า nvdec
และผู้ใช้จะต้องสร้างเอง
รองรับ Video4Linux2 สำหรับการถอดรหัสฮาร์ดแวร์ h264 บน Raspberry Pi (Pi 4B และเก่ากว่า)
คอมพิวเตอร์ Raspberry Pi (RPi) (ทดสอบบน Pi 4 Model B) สามารถเรียกใช้ UxPlay โดยใช้ซอฟต์แวร์ถอดรหัสวิดีโอได้แล้ว แต่ควรใช้การถอดรหัส h264/h265 ที่เร่งด้วยฮาร์ดแวร์ด้วยเฟิร์มแวร์ใน Broadcom 2835 GPU ของ Pi UxPlay เข้าถึงสิ่งนี้โดยใช้ปลั๊กอิน GStreamer-1.22 Video4Linux2 (v4l2) ใช้โมดูลเคอร์เนล Linux นอกระบบหลัก bcm2835-codec ที่ดูแลโดย Raspberry Pi ซึ่งขณะนี้รวมอยู่ใน Raspberry Pi OS เท่านั้น และอีกสองรุ่น (Ubuntu, Manjaro) ที่ใช้ได้กับ Raspberry Pi Imager (สำหรับ GStreamer < 1.22 โปรดดู UxPlay Wiki)
(ใหม่): รองรับการถอดรหัสฮาร์ดแวร์ h265 (HEVC) บน Raspberry Pi (Pi 4 model B และ Pi 5)
มีการสนับสนุน แต่ยังไม่ได้รับผลลัพธ์ที่น่าพอใจ Pi รุ่น 5 ให้การถอดรหัสแบบเร่งด้วยฮาร์ดแวร์ (GPU) สำหรับวิดีโอ h265 เท่านั้น แต่ไม่ใช่ H264 เนื่องจาก CPU มีประสิทธิภาพเพียงพอสำหรับการถอดรหัสซอฟต์แวร์ H264 ที่น่าพอใจ
ใบอนุญาต GPLv3 ของ UxPlay ไม่มี "ข้อยกเว้น GPL" เพิ่มเติม ซึ่งอนุญาตให้เผยแพร่ในรูปแบบที่คอมไพล์ได้อย่างชัดเจนเมื่อเชื่อมโยงกับเวอร์ชัน OpenSSL ก่อนเวอร์ชัน 3.0.0 (OpenSSL เวอร์ชันเก่ามีส่วนคำสั่งใบอนุญาตที่เข้ากันไม่ได้กับ GPL เว้นแต่ว่า OpenSSL สามารถ ถือเป็น "ไลบรารีระบบ" ซึ่งอยู่ใน *BSD) Linux จำนวนมากถือว่า OpenSSL เป็น "ไลบรารีระบบ" แต่บางรุ่น (เช่น Debian) ไม่ทำ ในกรณีนี้ ปัญหาได้รับการแก้ไขโดยการเชื่อมโยงกับ OpenSSL-3.0.0 หรือใหม่กว่า
ดาวน์โหลดและแตกไฟล์ UxPlay-master.zip หรือ (หากติดตั้ง git ไว้): "git clone https://github.com/FDH2/UxPlay" คุณยังสามารถดาวน์โหลดเวอร์ชันล่าสุดหรือเวอร์ชันก่อนหน้าที่แสดงอยู่ในรายการเผยแพร่ได้
(ปรับคำแนะนำเหล่านี้สำหรับ Linux ที่ไม่ใช่ Debian หรือ *BSD สำหรับ macOS ดูคำแนะนำเฉพาะด้านล่าง) ดูการแก้ไขปัญหาด้านล่างสำหรับความช่วยเหลือเกี่ยวกับปัญหาใดๆ
คุณต้องมีคอมไพเลอร์ C/C++ (เช่น g++) ที่ติดตั้งไลบรารีการพัฒนามาตรฐาน ระบบที่ใช้ Debian จัดเตรียมแพ็คเกจ "build-essential" เพื่อใช้ในการคอมไพล์ซอฟต์แวร์ คุณต้องมี pkg-config ด้วย: หากไม่พบโดย " which pkg-config
" ให้ติดตั้ง pkg-config หรือ pkgconf แทนที่การทำงานเหมือนกัน ตรวจสอบให้แน่ใจว่าติดตั้ง cmake>=3.5 แล้ว: " sudo apt install cmake
" (เพิ่ม build-essential
และ pkg-config
(หรือ pkgconf
) หากจำเป็น)
ตรวจสอบให้แน่ใจว่าการแจกจ่ายของคุณมี OpenSSL 1.1.1 หรือใหม่กว่า และ libplist 2.0 หรือใหม่กว่า (ซึ่งหมายถึงระบบที่ใช้ Debian 10 "Buster" (เช่น Ubuntu 18.04) หรือใหม่กว่า สำหรับระบบ Debian 10 "libplist" เป็นเวอร์ชันเก่า คุณต้องใช้ "libplist3") หากไม่มี คุณอาจต้องสร้างและติดตั้ง สิ่งเหล่านี้มาจากแหล่งที่มา (ดูคำแนะนำในตอนท้ายของ README นี้)
หากคุณมีการติดตั้ง OpenSSL ที่ไม่ได้มาตรฐาน คุณอาจต้องตั้งค่าตัวแปรสภาพแวดล้อม OPENSSL_ROOT_DIR ( เช่น " export OPENSSL_ROOT_DIR=/usr/local/lib64
" หากเป็นที่ที่ติดตั้งไว้) ในทำนองเดียวกัน สำหรับการติดตั้ง GStreamer ที่ไม่ได้มาตรฐาน (หรือหลายรายการ) ให้ตั้งค่าตัวแปรสภาพแวดล้อม GSTREAMER_ROOT_DIR เป็นไดเร็กทอรีที่มีไดเร็กทอรี ".../gstreamer-1.0/" ของการติดตั้ง gstreamer ที่ UxPlay ควรใช้ (หากเป็น เช่น "~ /my_gstreamer/lib/gstreamer-1.0/" ตั้งค่าตำแหน่งนี้ด้วย " export GSTREAMER_ROOT_DIR=$HOME/my_gstreamer/lib
-
ในหน้าต่างเทอร์มินัล เปลี่ยนไดเร็กทอรีเป็นไดเร็กทอรีซอร์สของซอร์สโค้ดที่ดาวน์โหลด ("UxPlay-*", "*" = "master" หรือแท็ก release สำหรับการดาวน์โหลดไฟล์ zipfile, "UxPlay" สำหรับการดาวน์โหลด "git clone") จากนั้น ทำตามคำแนะนำด้านล่าง:
หมายเหตุ: ตามค่าเริ่มต้น UxPlay จะถูกสร้างขึ้นพร้อมการปรับให้เหมาะสมสำหรับคอมพิวเตอร์ที่สร้างขึ้น เมื่อไม่เป็นเช่นนั้น เช่น เมื่อคุณกำลังบรรจุหีบห่อเพื่อการแจกจ่าย ให้ใช้ตัวเลือก cmake -DNO_MARCH_NATIVE=ON
หากคุณใช้ X11 Windows บน Linux หรือ *BSD และต้องการสลับเข้า/ออกจากโหมดเต็มหน้าจอด้วยการกดปุ่ม (F11 หรือ Alt_L+Enter) UxPlay จะต้องถูกสร้างขึ้นโดยขึ้นอยู่กับ X11 เริ่มต้นด้วย UxPlay-1.59 ซึ่งจะดำเนินการตามค่าเริ่มต้น หาก ติดตั้งและตรวจพบไลบรารีการพัฒนา X11 ติดตั้งสิ่งเหล่านี้ด้วย " sudo apt install libx11-dev
" หากตรวจพบ GStreamer < 1.20 จะมีการแก้ไขที่จำเป็นสำหรับแอปแชร์หน้าจอ ( เช่น , ซูม) ด้วยเช่นกัน
-DNO_X11_DEPS=ON
sudo apt install libssl-dev libplist-dev
" ( เว้นแต่คุณจะต้องสร้าง OpenSSL และ libplist จากแหล่งที่มา )sudo apt install libavahi-compat-libdnssd-dev
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
(* ข้ามหากคุณสร้าง Gstreamer จากแหล่งที่มา )cmake .
( สำหรับบิลด์ที่สะอาดกว่า ซึ่งมีประโยชน์หากคุณแก้ไขซอร์ส ให้แทนที่สิ่งนี้ด้วย " mkdir build; cd build; cmake ..
": จากนั้นคุณสามารถลบเนื้อหาของไดเร็กทอรี build
ได้หากจำเป็น โดยไม่ส่งผลกระทบต่อซอร์ส ) นอกจากนี้ เพิ่มตัวเลือก cmake " -D
" ที่นี่ตามต้องการ (เช่น -DNO_X11_DEPS=ON
หรือ -DNO_MARCH_NATIVE=ON
)make
sudo make install
(หลังจากนั้นคุณสามารถถอนการติดตั้งด้วย sudo make uninstall
ในไดเร็กทอรีเดียวกับที่รันอยู่) สิ่งนี้จะติดตั้งไฟล์ปฏิบัติการ " uxplay
" ไปที่ /usr/local/bin
(และติดตั้ง manpage ไปที่มาตรฐานบางแห่งเช่น /usr/local/share/man/man1
และไฟล์ README ไปยังที่อื่นเช่น /usr/local/share/doc/uxplay
) (หาก "man uxplay" ล้มเหลว ให้ตรวจสอบว่า $MANPATH ถูกตั้งค่าไว้หรือไม่ หากเป็นเช่นนั้น จำเป็นต้องเพิ่มพาธไปยัง manpage (โดยปกติคือ /usr/local/share/man/) ไปยัง $MANPATH ) โปรแกรมปฏิบัติการ uxplay อาจเป็น พบได้ในไดเร็กทอรี build หลังจากกระบวนการ build หากคุณต้องการทดสอบก่อนการติดตั้ง (ในกรณีนี้ จะต้องติดตั้งปลั๊กอิน GStreamer ก่อน)
**สำหรับผู้ที่มีการกระจายตาม RPM ไฟล์ข้อมูลจำเพาะ RPM uxplay.spec ก็พร้อมใช้งานเช่นกัน: โปรดดูที่การสร้างแพ็คเกจ rpm ที่สามารถติดตั้งได้
Red Hat หรือโคลนเช่น CentOS (ตอนนี้ยังคงเป็น Rocky Linux หรือ Alma Linux): (sudo dnf install หรือ sudo yum install) openssl-devel libplist-devel avahi-compat-libdns_sd-devel gstreamer1-devel gstreamer1-plugins-base- devel (+libX11-devel สำหรับ X11 แบบเต็มหน้าจอ) (บางส่วนอาจอยู่ในไฟล์ พื้นที่เก็บข้อมูลส่วนเสริม "CodeReady" เรียกว่า "PowerTools" โดยโคลน)
Mageia, PCLinuxOS, OpenMandriva: เหมือนกับ Red Hat ยกเว้นการเปลี่ยนชื่อ: (Mageia) "gstreamer1.0-devel", "gstreamer-plugins-base1.0-devel"; (OpenMandriva) "libopenssl-devel", "gstreamer-devel", "libgst-plugins-base1.0-devel" PCLinuxOS: เช่นเดียวกับ Mageia แต่ใช้ synaptic (หรือ apt) เป็นตัวจัดการแพ็คเกจ
openSUSE: (ติดตั้ง sudo zypper) libopenssl-3-devel (เดิมคือ libopenssl-devel) libplist-2_0-devel (เดิมคือ libplist-devel) avahi-compat-mDNSResponder-devel gstreamer-devel gstreamer-plugins-base-devel (+ libX11- พัฒนาสำหรับแบบเต็มหน้าจอ X11)
Arch Linux ( มีให้เป็นแพ็คเกจใน AUR ด้วย ): (sudo pacman -Syu) openssl libplist avahi gst-plugins-base.
FreeBSD: (ติดตั้ง sudo pkg) libplist gstreamer1 ต้องติดตั้ง avahi-libdns หรือ mDNSResponder เพื่อจัดเตรียมไลบรารี dns_sd OpenSSL ได้รับการติดตั้งเป็นไลบรารีระบบแล้ว
ตัวสร้าง RPM ครั้งแรกควรติดตั้งแพ็คเกจ rpm-build และ rpmdevtools ก่อน จากนั้นสร้างแผนผัง rpmbuild ด้วย " rpmdev-setuptree
" จากนั้นดาวน์โหลดและคัดลอก uxplay.spec ลงใน ~/rpmbuild/SPECS
ในไดเรกทอรีนั้น ให้เรียกใช้ " rpmdev-spectool -g -R uxplay.spec
" เพื่อดาวน์โหลดไฟล์ต้นฉบับที่เกี่ยวข้อง uxplay-*.tar.gz
ลงใน ~/rpmbuild/SOURCES
("rpmdev-spectool" อาจเรียกอีกอย่างว่า "spectool" ); จากนั้นเรียกใช้ " rpmbuild -ba uxplay.spec
" (คุณจะต้องติดตั้งการอ้างอิงที่จำเป็นในรายงานนี้) สิ่งนี้ควรสร้างแพ็คเกจ uxplay RPM ในไดเรกทอรีย่อยของ ~/rpmbuild/RPMS
( uxplay.spec ได้รับการทดสอบบน Fedora 38, Rocky Linux 9.2, openSUSE Leap 15.5, Mageia 9, OpenMandriva, PCLinuxOS สามารถแก้ไขได้อย่างง่ายดายเพื่อรวมรายการการพึ่งพาสำหรับการแจกแจงแบบอิง RPM อื่น ๆ )
ถัดไปให้ติดตั้งปลั๊กอิน GStreamer sudo apt install gstreamer1.0-<plugin>
ที่จำเป็นด้วย ค่าของ <plugin>
ที่ต้องการคือ:
การแจกแจงแบบเดเบียนจะแบ่งแพ็คเกจปลั๊กอินบางส่วนออกเป็นชิ้นเล็ก ๆ: บางแพ็คเกจอาจจำเป็นต้องมี " gl " สำหรับการรองรับ OpenGL (ซึ่งมีวิดีโอซิงค์ "-vs glimagesink" ซึ่งอาจมีประโยชน์มากในหลาย ๆ ระบบ (รวมถึง Raspberry Pi ) และควรใช้เสมอเมื่อใช้การถอดรหัส h264/h265 โดย NVIDIA GPU), " gtk3 " (ซึ่งให้วิดีโอซิงค์ "-vs gtksink") และ " x " สำหรับการรองรับ X11 แม้ว่าสิ่งเหล่านี้อาจถูกติดตั้งไว้แล้วก็ตาม " vaapi " จำเป็นสำหรับการถอดรหัสวิดีโอ h264 ที่เร่งด้วยฮาร์ดแวร์โดยกราฟิก Intel หรือ AMD (แต่ไม่ใช้กับ NVIDIA ที่ใช้ไดรเวอร์ที่เป็นกรรมสิทธิ์) หากเสียงไม่ทำงาน อาจจำเป็นต้องติดตั้งปลั๊กอิน " alsa "", " pulseaudio " หรือ " pipewire " ขึ้นอยู่กับวิธีการตั้งค่าเสียงของคุณ
ในบางกรณี เนื่องจากปัญหาด้านสิทธิบัตร คุณลักษณะปลั๊กอิน libav avdec_aac ที่จำเป็นสำหรับการถอดรหัสเสียง AAC ในโหมดมิเรอร์จึงไม่มีให้ในการเผยแพร่อย่างเป็นทางการ: รับได้จากแหล่งเก็บข้อมูลชุมชนสำหรับการแจกจ่ายเหล่านั้น
Red Hat หรือโคลนเช่น CentOS (ตอนนี้ยังคงเป็น Rocky Linux หรือ Alma Linux): ติดตั้ง gstreamer1-libav gstreamer1-plugins-bad-free (+ gstreamer1-vaapi สำหรับกราฟิก Intel/AMD) ใน Fedora ล่าสุด gstreamer1-libav ถูกเปลี่ยนชื่อเป็น gstreamer1-plugin-libav หากต้องการรับ avdec_aac ให้ติดตั้งแพ็คเกจจาก rpmfusion.org : (รับ ffmpeg-libs จาก rpmfusion; บน RHEL หรือโคลน แต่ไม่ใช่ Fedora ล่าสุดจะได้รับ gstreamer1-libav จากที่นั่นด้วย)
Mageia, PCLinuxOS, OpenMandriva: ติดตั้ง gstreamer1.0-libav gstreamer1.0-plugins-bad (+ gstreamer1.0-vaapi สำหรับกราฟิก Intel/AMD) บน Mageia หากต้องการรับ avdec_aac ให้ติดตั้ง ffmpeg จากพื้นที่เก็บข้อมูล "tainted" (ซึ่งมี gstreamer1.0-plugins-bad ที่สมบูรณ์กว่าด้วย)
openSUSE: ติดตั้ง gstreamer-plugins-libav gstreamer-plugins-bad (+ gstreamer-plugins-vaapi สำหรับกราฟิก Intel/AMD) หากต้องการรับ avdec_aac ให้ติดตั้งแพ็คเกจ libav* สำหรับ openSUSE จาก Packman "Essentials" คำแนะนำ: หลังจากเพิ่มที่เก็บ Packman ให้ใช้ตัวเลือกในการจัดการซอฟต์แวร์ YaST เพื่อเปลี่ยนแพ็คเกจระบบทั้งหมดสำหรับมัลติมีเดียเป็น Packman)
Arch Linux ติดตั้ง gst-plugins-good gst-plugins-bad gst-libav (+ gstreamer-vaapi สำหรับกราฟิก Intel/AMD)
FreeBSD: ติดตั้ง gstreamer1-libav, gstreamer1-plugins, gstreamer1-plugins-* (* = core, ดี, แย่, x, gtk, gl, vulkan, พัลส์, v4l2, ...), (+ gstreamer1-vaapi สำหรับ Intel/ กราฟิกเอเอ็มดี)
ตั้งแต่ UxPlay-1.64 UxPlay สามารถเริ่มต้นด้วยตัวเลือกที่อ่านจากไฟล์กำหนดค่า ซึ่งจะเป็นครั้งแรกที่พบ (1) ไฟล์ที่มีเส้นทางที่กำหนดโดยตัวแปรสภาพแวดล้อม $UXPLAYRC
, (2) ~/.uxplayrc
ในบ้านของผู้ใช้ ไดเรกทอรี ("~"), (3) ~/.config/uxplayrc
รูปแบบคือหนึ่งตัวเลือกต่อบรรทัด โดยละเว้นค่าเริ่มต้น "-"
ของตัวเลือกบรรทัดคำสั่ง บรรทัดในไฟล์การกำหนดค่าที่ขึ้นต้นด้วย "#"
จะถือเป็นความคิดเห็นและจะละเว้น
เรียกใช้ uxplay ในหน้าต่างเทอร์มินัล ในบางระบบ คุณสามารถระบุโหมดเต็มหน้าจอได้ด้วยตัวเลือก -fs
หรือสลับเข้าและออกจากโหมดเต็มหน้าจอด้วยปุ่ม F11 หรือ (กด Alt ซ้ายค้างไว้)+Enter ใช้ Ctrl-C (หรือปิดหน้าต่าง) เพื่อยุติการทำงานเมื่อเสร็จสิ้น หากเซิร์ฟเวอร์ UxPlay ไม่เห็นโดยแผง "Screen Mirroring" แบบเลื่อนลงของไคลเอ็นต์ iOS ให้ตรวจสอบว่าเซิร์ฟเวอร์ DNS-SD ของคุณ (โดยปกติคือ avahi-daemon) กำลังทำงานอยู่ โดยทำสิ่งนี้ในหน้าต่างเทอร์มินัลที่มี systemctl status avahi-daemon
หากสิ่งนี้แสดงว่า avahi-daemon ไม่ทำงาน ให้ควบคุมด้วย sudo systemctl [start,stop,enable,disable] avahi-daemon
(บนระบบที่ไม่ใช่ systemd เช่น *BSD ให้ใช้ sudo service avahi-daemon [status, start, stop, restart, ...]
) หากเห็น UxPlay แต่ไคลเอนต์ไม่สามารถเชื่อมต่อได้เมื่อเลือก อาจมีไฟร์วอลล์บนเซิร์ฟเวอร์ที่ป้องกันไม่ให้ UxPlay รับคำขอการเชื่อมต่อไคลเอนต์ เว้นแต่บางพอร์ตเครือข่ายจะเปิดขึ้น: หากไฟร์วอลล์ทำงานอยู่ ให้เปิดพอร์ต UDP 5353 ด้วย (สำหรับการสืบค้น mDNS) Avahi จำเป็น ดูการแก้ไขปัญหาด้านล่างสำหรับความช่วยเหลือเกี่ยวกับเรื่องนี้หรือปัญหาอื่นๆ
ต่างจาก Apple TV โดยค่าเริ่มต้นเซิร์ฟเวอร์ UxPlay ไม่ต้องการให้ลูกค้า "จับคู่" กับมันโดยใช้รหัสพินที่แสดงโดยเซิร์ฟเวอร์ (หลังจากนั้นไคลเอนต์ "เชื่อถือ" เซิร์ฟเวอร์และไม่จำเป็นต้องทำซ้ำ) ตั้งแต่เวอร์ชัน 1.67 เป็นต้นมา Uxplay เสนอ "การตรวจสอบสิทธิ์ด้วยพิน" ดังกล่าวเป็นตัวเลือก: ดู " -pin
" และ " -reg
" ในการใช้งาน เพื่อดูรายละเอียด หากคุณต้องการใช้ ลูกค้าบางรายที่มี MDM (การจัดการอุปกรณ์เคลื่อนที่ ซึ่งมักแสดงอยู่ในอุปกรณ์ที่นายจ้างเป็นเจ้าของ) จำเป็นต้องใช้การตรวจสอบสิทธิ์ด้วยพิน: UxPlay จะให้สิ่งนี้แม้ว่าจะทำงานโดยไม่มีตัวเลือกพินก็ตาม
ตามค่าเริ่มต้น UxPlay จะถูกล็อคไปยังไคลเอนต์ปัจจุบันจนกว่าไคลเอนต์นั้นจะยกเลิกการเชื่อมต่อ ตั้งแต่ UxPlay-1.58 ตัวเลือก -nohold
จะแก้ไขพฤติกรรมนี้ ดังนั้นเมื่อไคลเอนต์ใหม่ร้องขอการเชื่อมต่อ มันจะลบไคลเอนต์ปัจจุบันและเข้าควบคุม UxPlay 1.66 แนะนำกลไก ( -restrict
, -allow <id>
, -block <id>
) เพื่อควบคุมไคลเอนต์ที่ได้รับอนุญาตให้เชื่อมต่อโดยใช้ "deviceID" (ซึ่งในอุปกรณ์ Apple ดูเหมือนจะไม่เปลี่ยนรูป)
ในโหมดมิเรอร์ GStreamer มีตัวเลือก สอง วิธีในการเล่นวิดีโอพร้อมเสียงประกอบ: ก่อน UxPlay-1.64 สตรีมวิดีโอและเสียงจะเล่นโดยเร็วที่สุดหลังจากที่มาถึง (วิธี GStreamer " sync=false ") โดยมีนาฬิกาภายใน GStreamer ใช้เพื่อพยายามซิงโครไนซ์นาฬิกาเหล่านั้น เริ่มต้นด้วย UxPlay-1.64 วิธีอื่น (โหมด " sync=true " ของ GStreamer) ซึ่งใช้การประทับเวลาในสตรีมเสียงและวิดีโอที่ส่งโดยไคลเอ็นต์จะเป็นค่าเริ่มต้นใหม่ บนโฮสต์ UxPlay ที่ใช้พลังงานในการถอดรหัสต่ำ (เช่น Raspberry Pi Zero W หรือรุ่น 3 B+) จะทำให้เฟรมวิดีโอที่ไม่สามารถถอดรหัสได้ทันเวลาในการเล่นกับเสียง ทำให้วิดีโอกระตุก แต่ยังคงซิงโครไนซ์อยู่
วิธีการแบบเก่าที่ไม่ทำให้เฟรมวิดีโอล่าช้านั้นทำงานได้ดีกับระบบที่ทรงพลังกว่า และยังคงใช้งานได้กับตัวเลือก UxPlay " -vsync no
"; วิธีการนี้ปรับให้เข้ากับ "การสตรีมสด" และอาจดีกว่าเมื่อใช้ UxPlay เป็นจอภาพที่สองสำหรับคอมพิวเตอร์ Mac ในขณะที่วิธีการประทับเวลาเริ่มต้นใหม่นั้นดีที่สุดสำหรับการดูวิดีโอ เพื่อรักษาการเคลื่อนไหวของริมฝีปากและเสียง ซิงโครไนซ์ (หากไม่มีการใช้การประทับเวลา วิดีโอจะล้าหลังเสียงในที่สุดหากไม่สามารถถอดรหัสได้เร็วเพียงพอ: การถอดรหัสวิดีโอที่เร่งด้วยฮาร์ดแวร์ช่วยป้องกันสิ่งนี้ก่อนหน้านี้เมื่อไม่ได้ใช้การประทับเวลา)
-async
timestamp- ตัวเลือกพื้นฐาน (ตัวอย่างอาจเป็นถ้าคุณต้องการติดตามเนื้อเพลง Apple Music บนไคลเอนต์ในขณะที่ฟังเสียงที่เหนือกว่าบนเซิร์ฟเวอร์ UxPlay) การดำเนินการนี้จะหน่วงเวลาวิดีโอบนไคลเอนต์เพื่อให้ตรงกับเสียงบนเซิร์ฟเวอร์ ดังนั้นจึงทำให้เกิดความล่าช้าเล็กน้อยก่อนที่การหยุดชั่วคราวหรือการเปลี่ยนแปลงแทร็กที่เริ่มต้นบนไคลเอนต์จะส่งผลต่อเสียงที่เล่นโดยเซิร์ฟเวอร์ การควบคุมระดับเสียง AirPlay จะลดระดับเสียง (เกน) ได้ถึง -30dB: ช่วงเดซิเบล -30:0 สามารถลดขนาดจาก ต่ำ :0 หรือ ต่ำ : สูง ได้ โดยใช้ตัวเลือก -db
("-db Low " หรือ "-db ต่ำ : สูง ") ต่ำ ต้องเป็นลบ การปรับขนาดจะเป็นเส้นตรงในหน่วยเดซิเบล โปรดทราบว่ารูปแบบเสียงของ GStreamer จะ "ตัด" เสียงใดๆ ที่ได้รับเกิน +20db ดังนั้นให้รักษา ระดับ High ให้ต่ำกว่าระดับนั้น ตัวเลือก -taper
ให้โปรไฟล์การควบคุมระดับเสียง AirPlay แบบ "เรียว" ที่ผู้ใช้บางคนอาจต้องการ
ตัวเลือก -vsync และ -async ยังอนุญาตให้มีการปรับการหน่วงเวลาเสียงเชิงบวก (หรือลบ) ใน หน่วยมิลลิวินาที เพื่อการปรับแต่งแบบละเอียด : -vsync 20.5
หน่วงเวลาเสียงที่สัมพันธ์กับวิดีโอ 0.0205 วินาที; ค่าลบจะก้าวหน้าไป)
คุณอาจพบว่าวิดีโอได้รับการปรับปรุงโดยการตั้งค่า -fps 60 ซึ่งอนุญาตให้เล่นวิดีโอบางรายการได้ที่ 60 เฟรมต่อวินาที (คุณสามารถดูอัตราเฟรมที่สตรีมจริงได้โดยใช้ -vs fpsdisplaysink และ/หรือ -FPSdata) เมื่อใช้สิ่งนี้ คุณควรใช้ตัวเลือกการซิงโครไนซ์ตามการประทับเวลาเริ่มต้น -vsync
ตั้งแต่ UxPlay-1.54 คุณสามารถแสดง "ภาพหน้าปก" ที่มาพร้อมกันจากแหล่งต่างๆ เช่น Apple Music ในโหมดเสียงเท่านั้น (ALAC) ได้: เรียกใช้ " uxplay -ca <name> &
" ในพื้นหลัง จากนั้นเรียกใช้โปรแกรมดูรูปภาพพร้อมกับโหลดอัตโนมัติ คุณลักษณะ: ตัวอย่างคือ "feh": เรียกใช้ " feh -R 1 <name>
" ในเบื้องหน้า; ยุติ feh แล้ว Uxplay ด้วย " ctrl-C fg ctrl-C
"
ตามค่าเริ่มต้น GStreamer จะใช้อัลกอริธึมเพื่อค้นหา "videosink" ที่ดีที่สุด (คำของ GStreamer สำหรับไดรเวอร์กราฟิกเพื่อแสดงภาพ) เพื่อใช้งาน คุณสามารถแทนที่สิ่งนี้ได้ด้วยตัวเลือก uxplay -vs <videosink>
videoinks ใดบ้างที่ใช้งานได้ขึ้นอยู่กับระบบปฏิบัติการและฮาร์ดแวร์กราฟิกของคุณ: ใช้ " gst-inspect-1.0 | grep sink | grep -e video -e Video -e image
" เพื่อดูว่ามีอะไรบ้าง ความเป็นไปได้บางประการบน Linux/*BSD คือ:
glimagesink (OpenGL), เวย์แลนด์ซิงค์
ximagesink , ximagesink (X11)
kmssink , fbdevsink (กราฟิกคอนโซลที่ไม่มี X11)
vaapisink (สำหรับกราฟิกเร่งด้วยฮาร์ดแวร์ Intel/AMD); สำหรับกราฟิกฮาร์ดแวร์ NVIDIA (ที่มี CUDA) ให้ใช้ glimagesink รวมกับ " -vd nvh264dec
" (หรือ "nvh264sldec" ซึ่งเป็นตัวแปรใหม่ที่จะกลายเป็น "nvh264dec" ใน GStreamer-1.24)
หากเซิร์ฟเวอร์ "ไม่มีหัว" (ไม่มีจอภาพที่เชื่อมต่อ แสดงผลเสียงเท่านั้น) ให้ใช้ -vs 0
GStreamer ยังค้นหา "audiosink" ที่ดีที่สุดด้วย แทนที่ตัวเลือกด้วย -as <audiosink>
ตัวเลือกบน Linux ได้แก่ pulsesink, alsasink, pipewiresink, oss4sink; ดูสิ่งที่ใช้ได้กับ gst-inspect-1.0 | grep sink | grep -e audio -e Audio
ปัญหาทั่วไปประการหนึ่งเกี่ยวข้องกับ GStreamer ที่พยายามใช้การถอดรหัสวิดีโอ h264 ของฮาร์ดแวร์เร่งความเร็วที่มีการกำหนดค่าไม่ถูกต้องหรือขาดหายไป (เช่น VAAPI) ลองใช้ " uxplay -avdec
" เพื่อบังคับให้ซอฟต์แวร์ถอดรหัสวิดีโอ หากวิธีนี้ใช้ได้ผล คุณสามารถลองแก้ไขการถอดรหัสวิดีโอด้วยฮาร์ดแวร์เร่งความเร็วได้หากต้องการ หรือเพียงแค่ถอนการติดตั้งปลั๊กอิน GStreamer vaapi
ดูการใช้งานสำหรับตัวเลือกรันไทม์เพิ่มเติม
สำหรับวิดีโอ Framebuffer (สำหรับ Raspberry Pi OS "Lite" และการแจกแจงที่ไม่ใช่ X11 อื่นๆ) ให้ใช้ KMS videosink "-vs kmssink" (DirectFB framebuffer videosink "dfbvideosink" ใช้งานไม่ได้บน Pi และ segfaults) ในกรณีนี้ คุณควรใช้ตัวเลือก "-vs kmssink" อย่างชัดเจน เนื่องจากหากไม่มีตัวเลือกนี้ autovideosink จะไม่พบ videoink ที่ถูกต้อง
Raspberry Pi 5 ไม่มีการถอดรหัสฮาร์ดแวร์ H264 (และไม่จำเป็นต้องใช้)
Pi Zero 2 W, 3 Model B+ และ 4 Model B ควรใช้การถอดรหัสฮาร์ดแวร์ H264 โดย Broadcom GPU แต่ต้องใช้โมดูลเคอร์เนลนอกกระแสหลัก bcm2835_codec ที่ดูแลรักษาในแผนผังเคอร์เนล Raspberry Pi การแจกแจงที่ทราบกันว่ามีให้ ได้แก่ Raspberry Pi OS, Ubuntu และ Manjaro-RPi4 ใช้การถอดรหัสซอฟต์แวร์ (ตัวเลือก -avdec) หากไม่มีโมดูลนี้
Uxplay ใช้ปลั๊กอิน Video4Linux2 (v4l2) จาก GStreamer-1.22 และใหม่กว่าเพื่อเข้าถึง GPU หากใช้การถอดรหัสฮาร์ดแวร์ H264 สิ่งนี้ควรเกิดขึ้นโดยอัตโนมัติ สามารถใช้ตัวเลือก -v4l2 ได้ แต่โดยปกติแล้ววิธีที่ดีที่สุดคือปล่อยให้ GStreamer ค้นหาไปป์ไลน์วิดีโอที่ดีที่สุดด้วยตัวเอง
ในเวอร์ชันเก่า (GStreamer < 1.22) ปลั๊กอิน v4l2 จำเป็นต้องมีแพตช์: ดู UxPlay Wiki Legacy Raspberry Pi OS (Bullseye) มี GStreamer-1.18.4 ที่ได้รับการแพตช์บางส่วน ซึ่งต้องการตัวเลือก uxplay -bt709 (และอย่าใช้ -v4l2) ยังดีกว่าถ้าใช้แพตช์เต็มจาก UxPlay Wiki ในกรณีนี้
สำหรับ Raspberry Pi OS (Buster) แบบ "double-legacy" จะไม่มีแพตช์สำหรับ GStreamer-1.14 อันดับแรกให้สร้าง GStreamer-1.18.6 ที่ใหม่กว่าจากแหล่งที่มาโดยใช้คำแนะนำเหล่านี้ก่อนสร้าง UxPlay
Raspberry Pi 3 Model B+ ที่ใช้ระบบปฏิบัติการ 32 บิตยังสามารถเข้าถึง GPU ด้วยปลั๊กอิน GStreamer OMX (ใช้ตัวเลือก " -vd omxh264dec
") แต่เฟิร์มแวร์ Pi 4 Model B เสียหาย การสนับสนุน OMX ถูกลบออกจาก Raspberry Pi OS (Bullseye) แต่มีอยู่ใน Buster
วิดีโอ H265 (4K) รองรับการถอดรหัสฮาร์ดแวร์โดย Broadcom GPU บนรุ่น Raspberry Pi 5 รวมถึง Raspberry Pi 4 รุ่น B แม้ว่า GStreamer ดูเหมือนจะใช้การถอดรหัสฮาร์ดแวร์นี้ แต่ความเร็วในการเรนเดอร์ที่น่าพอใจของวิดีโอ 4K โดย UxPlay บน รุ่น Raspberry Pi เหล่านี้ยังไม่บรรลุผลสำเร็จ ต้องใช้ตัวเลือก "-h265" เพื่อเปิดใช้งานการรองรับ h265 แนะนำให้ใช้การเชื่อมต่ออีเทอร์เน็ตแบบใช้สายในโหมดนี้ (และอาจจำเป็นโดยไคลเอ็นต์)
แม้จะมีการถอดรหัสวิดีโอ GPU เฟรมบางเฟรมก็อาจหลุดออกไปโดยรุ่นที่ใช้พลังงานต่ำเพื่อให้เสียงและวิดีโอซิงโครไนซ์โดยใช้การประทับเวลา ใน Legacy Raspberry Pi OS (Bullseye) raspi-config "ตัวเลือกประสิทธิภาพ" อนุญาตให้ระบุจำนวนหน่วยความจำที่จะจัดสรรให้กับ GPU แต่การตั้งค่านี้ดูเหมือนจะหายไปใน Bookworm (แต่ยังคงสามารถตั้งค่าเป็นเช่น 128MB โดยการเพิ่มบรรทัด "gpu_mem=128" ใน /boot/config.txt) Pi Zero 2 W (ซึ่งมีหน่วยความจำ 512MB) ทำงานได้ดีเมื่อทดสอบใน Bullseye 32 บิตหรือ Bookworm Lite โดยจัดสรร 128MB ให้กับ GPU (ค่าเริ่มต้นน่าจะเป็น 64MB)
ตัวเลือก uxplay พื้นฐานสำหรับ R Pi คือ uxplay [-vs <videosink>]
ตัวเลือก <videosink>
= glimagesink
บางครั้งก็มีประโยชน์ ด้วยโปรแกรมแต่งวิดีโอ Wayland ให้ใช้ <videosink>
= waylandsink
สำหรับวิดีโอ framebuffer ให้ใช้ <videosink>
= kmssink
ssh user@remote_host
export DISPLAY=:0
nohup uxplay [options] > FILE &
เสียงและวิดีโอจะเล่นบนโฮสต์ระยะไกล "nohup" จะทำให้ uxplay ทำงานต่อไปหากเซสชัน ssh ปิดอยู่ เอาต์พุตเทอร์มินัลจะถูกบันทึกลงใน FILE (ซึ่งสามารถเป็น /dev/null เพื่อละทิ้ง)
หมายเหตุ: คุณลักษณะเซิร์ฟเวอร์ AirPlay Native รวมอยู่ใน MacOS 12 Monterey แต่ถูก จำกัด ไว้ที่ฮาร์ดแวร์ล่าสุด Uxplay สามารถทำงานบนระบบ MacOS รุ่นเก่าซึ่งจะไม่สามารถเรียกใช้ Monterey หรือสามารถเรียกใช้ Monterey แต่ไม่ใช่ AirPlay
คำแนะนำเหล่านี้สำหรับ MACOS สมมติว่ามีการติดตั้งเครื่องมือนักพัฒนาบรรทัดคำสั่ง XCode (หากติดตั้ง XCode ให้เปิดเทอร์มินัลให้พิมพ์ "Sudo XCode-Select-Install" และยอมรับเงื่อนไข)
นอกจากนี้ยังสันนิษฐานว่ามีการติดตั้ง CMake> = 3.13: สามารถทำได้ด้วยผู้จัดการแพ็คเกจ MacPorts ( sudo port install cmake
), homebrew ( brew install cmake
) หรือดาวน์โหลดจาก https://cmake.org/download/ ติดตั้ง git
ด้วยถ้าคุณจะใช้เพื่อดึง Uxplay
ถัดไปติดตั้ง libplist และ openssl-3.x โปรดทราบว่าห้องสมุดรุ่นคงที่เหล่านี้จะถูกใช้ใน MacOS Builds ดังนั้นพวกเขาจึงสามารถถอนการติดตั้งได้หลังจากสร้าง UxPlay หากคุณต้องการ
หากคุณใช้ Homebrew: brew install libplist openssl@3
หากคุณใช้ MacPorts: sudo port install libplist-devel openssl3
มิฉะนั้นให้สร้าง libplist และ openssl จากแหล่งที่มา: ดูคำแนะนำใกล้ถึงจุดสิ้นสุดของ readme นี้; ต้องใช้เครื่องมือพัฒนา (autoconf, automake, libtool ฯลฯ ) ที่จะติดตั้ง
ถัดไปรับการเปิดตัว MacOS ล่าสุดของ GStreamer-1.0
การใช้ "อย่างเป็นทางการ" Gstreamer (แนะนำสำหรับทั้ง Macports และผู้ใช้ Homebrew) : ติดตั้ง Gstreamer Release สำหรับ MacOS จาก https://gstreamer.freedesktop.org/download/ (รุ่นนี้มี PKG-Config ของตัวเองดังนั้นคุณไม่จำเป็นต้องติดตั้งหนึ่ง) ติดตั้งแพ็คเกจ GStreamer-1.0 และ Gstreamer-1.0-Devel หลังจากดาวน์โหลดให้เปลี่ยนให้ติดตั้งเพื่อติดตั้ง (ติดตั้งไปที่ /library/frameworks/gstreamer.framework) ผู้ใช้ Homebrew หรือ MacPorts ไม่ ควรติดตั้ง (หรือควรถอนการติดตั้ง) Gstreamer ที่จัดทำโดยผู้จัดการแพ็คเกจของพวกเขาหากพวกเขาใช้การเปิดตัว "อย่างเป็นทางการ"
การใช้ Gstreamer ของ Homebrew : PKG-Config เป็นสิ่งจำเป็น: ("Brew ติดตั้ง pkg-config gstreamer") สิ่งนี้ทำให้แพ็คเกจพิเศษจำนวนมากติดตั้งโดย Homebrew เป็นการพึ่งพา การติดตั้ง Homebrew Gstreamer เพิ่งได้รับการปรับปรุงใหม่เป็น "สูตร" เดียวที่ชื่อว่า gstreamer
ซึ่งตอนนี้ใช้งานได้โดยไม่จำเป็นต้องตั้งค่า GST_PLUGIN_PATH ในสภาพแวดล้อม Homebrew ติดตั้ง gstreamer เป็น (HOMEBREW)/lib/gstreamer-1.0
โดยที่ (HOMEBREW)/*
is /opt/homebrew/*
บน Apple Silicon Macs และ /usr/local/*
บน Intel Macs; อย่าใส่ปลั๊กอินที่ไม่ใช่ฮีมบรูว์พิเศษ (ที่คุณสร้างตัวเอง) ที่นั่นและตั้งค่า GST_PLUGIN_PATH ให้ชี้ไปที่ตำแหน่งของพวกเขา (Homebrew ไม่ได้จัดหา Gstreamer ที่สมบูรณ์ แต่ดูเหมือนว่าจะมีทุกอย่างที่จำเป็นสำหรับ uxplay)
การใช้ Gstreamer ที่ติดตั้งจาก MacPorts : ไม่ แนะนำให้ใช้เนื่องจากปัจจุบัน MacPorts Gstreamer นั้นเก่า (v1.16.2), unminted และสร้างขึ้นเพื่อใช้ x11:
(หากคุณต้องการใช้ MacPorts Gstreamer-1.16.2 ให้ติดตั้ง pkgconf ("Sudo Port ติดตั้ง pkgconf") จากนั้น "Sudo Port ติดตั้ง GStreamer1-gst-plugins-base gstreamer1-gst-plugins-good Gstreamer1-Gstreamer1-Gstreamer1-gst -bad gstreamer1-gst-libav "สำหรับการสนับสนุน x11 บน macOS คอมไพล์ uxplay โดยใช้ตัวเลือก cmake พิเศษ -DUSE_X11=ON
และเรียกใช้จากเทอร์มินัล Xquartz ด้วย -VS XimagesInk uxplay -s 800x600
หลังจากติดตั้ง gstreamer ให้สร้างและติดตั้ง uxplay: เปิดเทอร์มินัลและเปลี่ยนเป็นไดเรกทอรีแหล่งกำเนิด uxplay ("uxplay-master" สำหรับการดาวน์โหลด zipfile "uxplay" สำหรับดาวน์โหลด "git clone") และสร้าง/ติดตั้งด้วย "cmake; make; Sudo Make Install "(เหมือนกับ Linux)
การรัน uxplay ในขณะที่ตรวจสอบคำเตือน gstreamer (ทำสิ่งนี้ด้วย "Export GST_DEBUG = 2" ก่อนที่จะ runnng uxplay) เผยให้เห็นว่าด้วยค่าเริ่มต้น (ตั้งแต่ uxplay 1.64) การใช้การประทับเวลาสำหรับการซิงก์วิดีโอเฟรมวิดีโอจำนวนมาก อาจเป็นเพราะข้อผิดพลาดอื่น (เกี่ยวกับ videometa) ที่ปรากฏในคำเตือน Gstreamer คำแนะนำ: ใช้ UXPLAY ใหม่ "No Timestamp" Option " -vsync no
" (คุณสามารถเพิ่มบรรทัด "VSYNC NO" ในไฟล์การกำหนดค่า UXPLAYRC)
บน MacOS ด้วยการติดตั้ง Gstreamer นี้วิดีโอเดียวที่มีอยู่ดูเหมือนจะเป็น GlimagesInk (ตัวเลือกเริ่มต้นที่สร้างโดย Autovideosink) และ OsxVideoSink ชื่อหน้าต่างไม่แสดงชื่อเซิร์ฟเวอร์ AirPlay แต่หน้าต่างสามารถมองเห็นได้สำหรับแอพแชร์หน้าจอ (เช่นการซูม) Audiosink ที่มีอยู่เท่านั้นดูเหมือนจะเป็น Osxaudiosink
ตัวเลือก -NC จะใช้เสมอไม่ว่าจะถูกเลือกหรือไม่ก็ตาม นี่เป็นวิธีแก้ปัญหาสำหรับปัญหาเกี่ยวกับ Gstreamer VideoSinks บน MacOS: หากไปป์ไลน์ Gstreamer ถูกทำลายในขณะที่หน้าต่างกระจกยังเปิดอยู่ Segfault จะเกิดขึ้น
ในกรณีของ GlimagesInk การตั้งค่าความละเอียด "-s WXH" จะไม่ส่งผลกระทบต่อขนาดหน้าต่างกระจกเปิด (เล็ก) แต่สามารถขยายหน้าต่างได้โดยใช้เมาส์หรือแทร็คแพด ในทางตรงกันข้ามหน้าต่างที่สร้างขึ้นด้วย "-vs osxvideosink" มีขนาดใหญ่ในตอนแรก แต่มีอัตราส่วนที่ผิด (ภาพยืด); ในกรณีนี้อัตราส่วนภาพจะเปลี่ยนไปเมื่อความกว้างของหน้าต่างเปลี่ยนไปโดยการลากด้านข้าง ตัวเลือก -vs "osxvideosink force-aspect-ratio=true"
สามารถใช้เพื่อทำให้หน้าต่างมีอัตราส่วนที่ถูกต้องเมื่อเปิดเป็นครั้งแรก
ดาวน์โหลดและติดตั้ง Bonjour SDK สำหรับ Windows v3.0 คุณสามารถดาวน์โหลด SDK ได้โดยไม่ต้องลงทะเบียนที่ SoftPedia.com หรือรับจากเว็บไซต์ Apple อย่างเป็นทางการ https://developer.apple.com/download (Apple ทำให้คุณลงทะเบียนเป็นนักพัฒนาเพื่อเข้าถึงจากเว็บไซต์ของพวกเขา) สิ่งนี้ควรติดตั้ง bonjour sdk เป็น C:Program FilesBonjour SDK
(นี่สำหรับหน้าต่าง 64 บิตควรมีการสร้างหน้าต่าง 32 บิต แต่ไม่ได้ทดสอบ) สภาพแวดล้อมการสร้าง MSYS2 ที่เหมือน UNIX จะถูกนำมาใช้: ดาวน์โหลดและติดตั้ง MSYS2 จากเว็บไซต์อย่างเป็นทางการ https: // www .SSYS2.org/ ยอมรับตำแหน่งการติดตั้งเริ่มต้น C:mysys64
แพ็คเกจ MSYS2 ถูกติดตั้งด้วยตัวแปรของแพ็คเกจ "Pacman" ที่ใช้โดย Arch Linux เปิดเทอร์มินัล "MSYS2 MINGW64" จากแท็บ MSYS2 ในเมนู Windows Start และอัปเดตการติดตั้ง MSYS2 ใหม่ด้วย "Pacman -Syu" จากนั้นติดตั้งคอมไพเลอร์ MingW-64 และ cmake
pacman -S mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc
คอมไพเลอร์ที่มีการพึ่งพาที่ต้องการทั้งหมดจะถูกติดตั้งในไดเรกทอรี MSYS64 พร้อมเส้นทางเริ่มต้น C:/msys64/mingw64
ที่นี่เราจะสร้าง uxplay จากบรรทัดคำสั่งในสภาพแวดล้อม MSYS2 (สิ่งนี้ใช้ " ninja
" แทน " make
" สำหรับระบบบิลด์)
ดาวน์โหลด UxPlay ล่าสุดจาก GitHub (เพื่อใช้ git
ติดตั้งด้วย pacman -S git
จากนั้น " git clone https://github.com/FDH2/UxPlay
") จากนั้นติดตั้ง UxPlay Dependencies (OpenSSL ติดตั้งด้วย MSYS2):
pacman -S mingw-w64-x86_64-libplist mingw-w64-x86_64-gstreamer mingw-w64-x86_64-gst-plugins-base
หากคุณกำลังลองใช้ระบบ Build Windows ที่แตกต่างกัน Gstreamer รุ่น MSVC สำหรับ Windows นั้นมีให้บริการจากเว็บไซต์ Gstreamer อย่างเป็นทางการ แต่มีการทดสอบเฉพาะ MingW 64 บิตบน MSYS2 เท่านั้น
ซีดีไปยังไดเรกทอรีแหล่งกำเนิด UxPlay จากนั้น " mkdir build
" และ " cd build
" กระบวนการสร้างสมมติว่า Bonjour SDK ถูกติดตั้งที่ C:Program FilesBonjour SDK
หากเป็นที่อื่นให้ตั้งค่าตัวแปรสภาพแวดล้อม bonjour_sdk_home เพื่อชี้ไปที่ตำแหน่ง จากนั้นสร้าง uxplay ด้วย
cmake ..
ninja
สมมติว่าไม่มีข้อผิดพลาดใด ๆ ในสิ่งเหล่านี้คุณจะได้สร้าง uxplay.exe uxplay uxplay ในไดเรกทอรีปัจจุบัน ("build") คุณสมบัติ "sudo make install" และ "sudo make uninstall" ที่นำเสนอในงานสร้างอื่น ๆ ไม่สามารถใช้ได้บน Windows; แต่สภาพแวดล้อม MSYS2 มี /mingw64/...
พร้อมใช้งานและคุณสามารถติดตั้ง uxplay.exe ที่เรียกใช้งานได้ใน C:/msys64/mingw64/bin
(รวมถึง MANPAGE และเอกสารใน C:/msys64/mingw64/share/...
) กับ
cmake --install . --prefix /mingw64
เพื่อให้สามารถดู Manpage คุณต้องติดตั้ง ManPage Viewer ด้วย " pacman -S man
"
ในการเรียกใช้ uxplay.exe คุณต้องติดตั้งแพ็คเกจปลั๊กอิน GStreamer บางตัวด้วย <plugin>
pacman -S mingw-w64-x86_64-gst-<plugin>
แพ็คเกจปลั๊กอิน MSYS2 GStreamer อื่น ๆ ที่เป็นไปได้ที่คุณอาจใช้อยู่ในแพ็คเกจ MSYS2
คุณจะต้องให้สิทธิ์แก่ UxPlay.exe ที่ใช้งานได้ UXPlay เพื่อเข้าถึงข้อมูลผ่านไฟร์วอลล์ Windows คุณอาจเสนอทางเลือกโดยอัตโนมัติเมื่อคุณเรียกใช้ UxPlay ครั้งแรกหรือคุณอาจต้องทำโดยใช้ การตั้งค่า Windows-> Update และ Security-> Windows Security-> Firewall & Network Protection-> อนุญาตแอพผ่านไฟร์วอลล์ หากการป้องกันไวรัสของคุณตั้งค่าสถานะ uxplay.exe เป็น "น่าสงสัย" (แต่ไม่มีลายเซ็นมัลแวร์ที่แท้จริง) คุณอาจต้องให้ข้อยกเว้น
ตอนนี้ทดสอบโดยเรียกใช้ " uxplay
" (ในหน้าต่างเทอร์มินัล MSYS2) หากคุณต้องการระบุ Audiosink มีตัวเลือกหลักสองตัวเลือกบน Windows: ปลั๊กอิน Directsound เก่าแก่ " -as directsoundsink
" และปลั๊กอิน Windows Audio Session API ( -as wasapisink
) ที่ทันสมัยมากขึ้น "
uxplay -as 'wasapisink device="<guid>"'
โดยที่ <guid>
ระบุอุปกรณ์เสียงที่มีอยู่โดย GUID ซึ่งสามารถพบได้โดยใช้ " gst-device-monitor-1.0 Audio
": <guid>
มีแบบฟอร์มเช่น {0.0.0.00000000}.{98e35b2b-8eba-412e-b840-fd2c2492cf44}
หากไม่ได้ระบุ " device
" อุปกรณ์เสียงเริ่มต้นจะถูกใช้
หากคุณต้องการระบุ VideoSink โดยใช้ตัวเลือก -vs <videosink>
ตัวเลือกบางอย่างสำหรับ <videosink>
คือ d3d11videosink
, d3dvideosink
, glimagesink
, gtksink
-vs "d3d11videosink fullscreen-toggle-mode=property fullscreen=true"
หรือรับความสามารถในการสลับเข้าและออกจากโหมดเต็มหน้าจอ การรวมกันกับตัวเลือก -vs "d3d11videosink fullscreen-toggle-mode=alt-enter"
เพื่อความสะดวกจะมีการเพิ่มตัวเลือกเหล่านี้หากใช้เพียง -vs d3d11videosink
ที่มีหรือไม่มีตัวเลือกเต็มหน้าจอ "-FS" (ผู้ใช้ Windows อาจต้องการเพิ่ม " vs d3d11videosink
" (ไม่เริ่มต้น " -
") ลงในไฟล์ตัวเลือกการเริ่มต้น UXPlay ดู "Man UxPlay" หรือ "UxPlay -H" uxplay.exe ที่เรียกใช้งานได้สามารถทำงานได้โดยไม่ต้องมีสภาพแวดล้อม MSYS2 ในเทอร์มินัล Windows ด้วย C:msys64mingw64binuxplay
ตัวเลือก:
-
") ในไฟล์เริ่มต้น uxplay (ไม่ว่าจะโดยตัวแปรสภาพแวดล้อม $UXPLAYRC
หรือ ~/.uxplayrc
หรือ ~/.config/uxplayrc
); บรรทัดที่เริ่มต้นด้วย " #
" ถือเป็นความคิดเห็นและเพิกเฉย ตัวเลือกบรรทัดคำสั่งแทนที่ตัวเลือกในไฟล์เริ่มต้น-n server_name (ค่าเริ่มต้น: uxplay); server_name@ hostname จะเป็นชื่อที่ปรากฏว่าให้บริการ AirPlay ไปยัง iPad, iPhone ฯลฯ ซึ่ง ชื่อโฮสต์ คือชื่อของเซิร์ฟเวอร์ที่ใช้งาน UxPlay ตอนนี้จะเป็นชื่อที่แสดงด้านบนหน้าต่าง Mirror Display (x11)
-nh ไม่ผนวก "@ hostname " ในตอนท้ายของชื่อเซิร์ฟเวอร์ Airplay
-H265 เปิดใช้งาน "ScreenMulticodec" สนับสนุน (AirPlay "คุณสมบัติบิต 42) สำหรับการรับวิดีโอ H265 (4K/HEVC) นอกเหนือจากวิดีโอ H264 (1080p) ในโหมดหน้าจอ Mirror เมื่อใช้ตัวเลือกนี้จะมีการสร้าง "วิดีโอวิดีโอ" สองรายการ (หนึ่งอันสำหรับ H264 หนึ่งรายการสำหรับ H265) จะถูกสร้างขึ้น หากปลั๊กอิน GStreamer ใด ๆ ในไปป์ไลน์มีความเฉพาะเจาะจงสำหรับ H264 หรือ H265 เวอร์ชันที่ถูกต้องจะถูกใช้ในแต่ละไปป์ไลน์ การเชื่อมต่ออีเธอร์เน็ตไคลเอนต์-เซิร์ฟเวอร์แบบมีสายนั้นเป็นที่ต้องการมากกว่า WiFi สำหรับวิดีโอ 4K และลูกค้าอาจต้องการ เฉพาะอุปกรณ์ Apple ล่าสุด (M1/M2 MACs หรือ iPads และ iPhone บางตัว) สามารถส่งวิดีโอ H265 ได้หากมีการร้องขอ RONDEUT "-S WXH" ด้วย H> 1080 ตัวเลือก "-H265" เปลี่ยนความละเอียดเริ่มต้น ("-S") จาก 1920x1080 เป็น 3840x2160 และออกจากเฟรมสูงสุดเริ่มต้น ("-FPS" ที่ 30fps
-pin [nnnn] : (ตั้งแต่ v1.67) ใช้การรับรองความถูกต้องของ Apple-style (ครั้งเดียว) "PIN" เมื่อไคลเอนต์ใหม่เชื่อมต่อเป็นครั้งแรก: รหัสพินสี่หลักจะแสดงบนเทอร์มินัลและไคลเอนต์ หน้าจอแสดงพรอมต์เข้าสู่ระบบสำหรับสิ่งนี้ที่จะป้อน เมื่อใช้ "-pin" ด้วยตัวเองรหัสพินแบบสุ่มใหม่จะถูกเลือกสำหรับการตรวจสอบแต่ละครั้ง หากใช้ "-pin nnnn" (เช่น "-pin 3939") จะใช้รหัสคงที่ไม่เปลี่ยนแปลง การรับรองความถูกต้องเพิ่มเซิร์ฟเวอร์ลงในรายการ "เซิร์ฟเวอร์ที่เชื่อถือได้" ของลูกค้าและไคลเอนต์จะไม่จำเป็นต้องมีการรับรองอีกครั้งโดยที่คีย์สาธารณะและเซิร์ฟเวอร์สาธารณะยังคงไม่เปลี่ยนแปลง (โดยค่าเริ่มต้นตั้งแต่ v1.68 คีย์สาธารณะเซิร์ฟเวอร์ถูกสร้างขึ้นจากที่อยู่ MAC ซึ่งสามารถเปลี่ยนแปลงได้ด้วยตัวเลือก -M ดูตัวเลือก -KEY สำหรับวิธีการอื่นของการสร้างคีย์) (เพิ่มบรรทัด "PIN" ในไฟล์เริ่มต้น UXPLAY หากคุณต้องการให้เซิร์ฟเวอร์ UXPLAY ใช้โปรโตคอลการรับรองความถูกต้อง PIN)
-reg [ ชื่อไฟล์ ] : (ตั้งแต่ v1.68) หากใช้ "-pin" ตัวเลือกนี้จะคงไว้ซึ่งการลงทะเบียนของ "ลูกค้าที่เชื่อถือได้" ที่ได้รับการตรวจสอบความถูกต้องของ PIN ใน $ home/.uxplay.register (หรือทางเลือกใน ชื่อไฟล์ ) หากไม่มีตัวเลือกนี้การส่งคืนลูกค้าที่ข้ามการตรวจสอบความถูกต้องจะเชื่อถือได้และไม่ได้ตรวจสอบ ตัวเลือกนี้อาจมีประโยชน์หากใช้ UxPlay ในสภาพแวดล้อมสาธารณะมากขึ้นเพื่อบันทึกรายละเอียดของลูกค้า การลงทะเบียนคือข้อความหนึ่งบรรทัดต่อไคลเอนต์พร้อมคีย์สาธารณะของลูกค้า (รูปแบบ Base-64) รหัสอุปกรณ์และชื่ออุปกรณ์ การแสดงความคิดเห็น (ด้วย "#") หรือการลบบรรทัด deregisters ไคลเอนต์ที่เกี่ยวข้อง (ดูตัวเลือก -Restrict, -block, -ขออนุญาตเพิ่มเติมในการควบคุมการเข้าถึงไคลเอนต์) (เพิ่มบรรทัด "reg" ในไฟล์เริ่มต้นหากคุณต้องการใช้คุณสมบัตินี้)
-vsync [x] (ในโหมดมิเรอร์ :) ตัวเลือกนี้ ( ตอนนี้ค่าเริ่มต้น ) ใช้การประทับเวลาเพื่อซิงโครไนซ์เสียงกับวิดีโอบนเซิร์ฟเวอร์โดยมีการหน่วงเวลาทางเสียงที่เป็นตัวเลือกในมิลลิวินาที (decimal) ( x = "20.5" หมายถึง 0.0205 วินาทีล่าช้า: อนุญาตให้มีความล่าช้าในเชิงบวกหรือเชิงลบน้อยกว่าวินาที) จำเป็นต้องใช้ในระบบพลังงานต่ำเช่น Raspberry Pi โดยไม่ต้องถอดรหัสวิดีโอฮาร์ดแวร์
-vsync NO (ในโหมดมิเรอร์ :) นี่จะปิดการซิงโครไนซ์เสียงวิดีโอที่ใช้เวลาตามเวลาโดยเรียกคืนพฤติกรรมเริ่มต้นก่อน UXPLAY-1.64 ระบบเดสก์ท็อปมาตรฐานดูเหมือนจะทำงานได้ดีโดยไม่ต้องใช้การประทับเวลา: โหมดนี้เหมาะสำหรับ "การสตรีมสด" เช่นการใช้ UxPlay เป็นจอภาพที่สองสำหรับคอมพิวเตอร์ MAC หรือตรวจสอบเว็บแคม ด้วยมันไม่มีเฟรมวิดีโอถูกทิ้ง
-async [x] (ในโหมดเสียงเท่านั้น (ALAC) :) ตัวเลือกนี้ใช้การประทับเวลา เพื่อ ซิงโครไนซ์เสียงบนเซิร์ฟเวอร์ด้วยวิดีโอบนไคลเอน ความล่าช้าครั้งที่สอง: ความล่าช้าในเชิงบวกหรือลบน้อยกว่าหนึ่งวินาทีได้รับอนุญาต) เนื่องจากไคลเอนต์เพิ่มความล่าช้าวิดีโอลงในบัญชีสำหรับเวลาแฝงเซิร์ฟเวอร์ในโหมด -Sync จะเพิ่มค่าที่เทียบเท่า ความล่าช้าของเสียงซึ่งหมายความว่าการเปลี่ยนแปลงเสียงเช่นหยุดชั่วคราวหรือการเปลี่ยนแทร็กจะไม่มีผลทันที โดยหลักการแล้วสิ่งนี้อาจลดลงโดยใช้การตั้งค่าเวลาแฝงเสียง -al
เพื่อเปลี่ยนเวลาแฝง (ค่าเริ่มต้น 0.25 วินาที) ที่เซิร์ฟเวอร์รายงานไปยังไคลเอนต์ แต่ในปัจจุบันการเปลี่ยนแปลงสิ่งนี้ดูเหมือนจะไม่มีผลกระทบใด ๆ
-async no . นี่เป็นพฤติกรรมเริ่มต้นในโหมดเสียงเท่านั้น แต่ตัวเลือกนี้อาจมีประโยชน์เป็นตัวเลือกบรรทัดคำสั่งเพื่อปิดตัวเลือก -async
ที่ตั้งไว้ในไฟล์การกำหนดค่า "UXPLAYRC"
-DB ต่ำ [: สูง ] ช่วยลดการลดทอนการลดระดับเสียง (GAIN) จาก -30dB: 0dB ถึง ต่ำ : 0dB หรือ ต่ำ : สูง ขีด จำกัด ล่าง ต่ำ จะต้องเป็นลบ (การลดทอน); ขีด จำกัด สูงสุดสามารถเป็นสัญญาณได้ (GStreamer จำกัด ปริมาณการเพิ่ม ความสูง เพื่อให้ไม่เกิน +20dB) การ rescaling คือ "แบน" ดังนั้นสำหรับ -DB -50: 10 การเปลี่ยนแปลงการลดทอนการออกอากาศโดย -7dB ถูกแปลเป็น -7 x (60/30) = -14dB การลดทอนและปริมาณสูงสุด (AirPlay 0dB) เป็นการเพิ่ม 10dB และ AirPlay -30dB จะกลายเป็น -50dB โปรดทราบว่าค่าการออกอากาศขั้นต่ำ (-30dB แน่นอน) ถูกแปลเป็น "ปิดเสียง"
-Taper ให้โปรไฟล์การควบคุมระดับเสียง "เรียว" (จับคู่ที่เรียกว่า "Dasl-tapering" ใน Shairport-Sync): ทุกครั้งที่ความยาวของตัวเลื่อนระดับเสียง (หรือจำนวนขั้นตอนเหนือใบ้โดยที่ 16 ขั้นตอน = เต็ม ปริมาณ) ลดลง 50%ปริมาณการรับรู้จะลดลงครึ่งหนึ่ง (การลดทอน 10dB) (นี่คือการแก้ไขที่ปริมาณต่ำเพื่อใช้ปริมาณ "ไม่ได้อ่าน" ถ้ามันดังขึ้น)
-S WXH เช่น -S 1920x1080 (= "1080p"), ความกว้างเริ่มต้นและความสูงเริ่มต้นในพิกเซลสำหรับวิดีโอ H264 (ค่าเริ่มต้นกลายเป็น 3840x2160 (= "4K") เมื่อใช้ตัวเลือก -H265) นี่เป็นเพียงคำขอที่ทำกับไคลเอนต์ AirPlay และอาจจะไม่ใช่ความละเอียดสุดท้ายที่คุณได้รับ W และ H เป็นตัวเลขทั้งหมดที่มีตัวเลขสี่หลักหรือน้อยกว่า โปรดทราบว่าขนาดพิกเซล ความสูง เป็นตัวควบคุมที่ใช้โดยไคลเอนต์เพื่อกำหนดรูปแบบการสตรีม ความกว้างถูกปรับแบบไดนามิกให้เป็นรูปร่างของภาพ (รูปแบบแนวตั้งหรือรูปแบบภูมิทัศน์ขึ้นอยู่กับว่า iPad จัดขึ้นอย่างไร)
-S WXH@R ดังที่กล่าวมาข้างต้น แต่ยังแจ้งไคลเอนต์ AirPlay เกี่ยวกับอัตราการรีเฟรชหน้าจอของจอแสดงผล ค่าเริ่มต้นคือ r = 60 (60 Hz); r ต้องเป็นจำนวนทั้งหมดน้อยกว่า 256
-o เปิดตัวเลือก "overscanned" สำหรับหน้าต่างการแสดงผล สิ่งนี้จะช่วยลดความละเอียดของภาพโดยใช้พิกเซลบางตัวที่ร้องขอโดยตัวเลือก -S WXH (หรือค่าเริ่มต้นของพวกเขา 1920x1080) โดยการเพิ่มกรอบขอบเขตที่ว่างเปล่าของพิกเซลที่ไม่ได้ใช้งาน (ซึ่งจะหายไปในจอแสดงผลแบบเต็มหน้าจอ แสดงโดย gstreamer) คำแนะนำ: อย่าใช้ตัวเลือกนี้ เว้นแต่จะมีเหตุผลพิเศษบางอย่างที่จะใช้
-FS ใช้โหมดเต็มหน้าจอ แต่ใช้งานได้กับ X11, Wayland, VAAPI และ D3D11 (Windows) เท่านั้น
-P ช่วยให้คุณสามารถเลือกพอร์ตเครือข่ายที่ใช้โดย UxPlay (จำเป็นต้องเปิดเหล่านี้หากเซิร์ฟเวอร์อยู่ด้านหลังไฟร์วอลล์) ด้วยตัวเอง -p ตั้งค่าพอร์ต "Legacy" TCP 7100, 7000, 7001, UDP 6000, 6001, 7011. -pn (เช่น -p 35000) ตั้งค่าพอร์ต TCP และ UDP N, N+1, N+2 -P N1, N2, N3 (ค่าที่คั่นด้วยเครื่องหมายจุลภาค) ตั้งค่าแต่ละพอร์ตแยกกัน -P N1, N2 ตั้งค่าพอร์ต N1, N2, N2+1 -p TCP N หรือ -P UDP N ตั้งค่าเพียงพอร์ต TCP หรือ UDP พอร์ตจะต้องอยู่ในช่วง [1024-65535]
หากไม่ได้ใช้ตัวเลือก -P พอร์ตจะถูกเลือกแบบไดนามิก (แบบสุ่ม) ซึ่งจะไม่ทำงานหากไฟร์วอลล์ทำงานอยู่
-AVDEC กองกำลังการใช้ซอฟต์แวร์ H264 การถอดรหัสโดยใช้องค์ประกอบ GStreamer AVDEC_H264 (LIBAV H264 DECODER) ตัวเลือกนี้ควรป้องกัน Autovideosink ที่เลือกปลั๊กอินวิดีโอวิดีโอที่เร่งด้วยฮาร์ดแวร์เช่น Vaapisink
-VP Parser จะเลือกองค์ประกอบ Parser ของ Gstreamer Pipeline ของ Gstreamer, ค่าเริ่มต้นคือ H264Parse การใช้เครื่องหมายคำพูด "... " อนุญาตให้เพิ่มตัวเลือก
-VD Decoder เลือกองค์ประกอบตัวถอดรหัส H264 ของ Gstreamer ของ Gstreamer แทนที่จะเป็นค่าเริ่มต้น "DecodeBin" ซึ่งเลือกให้คุณ การถอดรหัสซอฟต์แวร์ทำได้โดย AVDEC_H264; ตัวถอดรหัสฮาร์ดแวร์ต่าง ๆ ได้แก่ : VAAPIH264DEC, NVDEC, NVH264DEC, V4L2H264DEC (สิ่งเหล่านี้ต้องการให้ฮาร์ดแวร์ที่เหมาะสมมีอยู่) การใช้เครื่องหมายคำพูด "... " อนุญาตให้มีพารามิเตอร์บางตัวรวมอยู่ในชื่อตัวถอดรหัส
-VC Converter เลือกองค์ประกอบ Videoconverter ของ Gstreamer Pipeline แทนที่จะเป็นค่าเริ่มต้น "VideoConvert" เมื่อใช้ Video4Linux2 ฮาร์ดแวร์การตกแต่งโดย GPU, -vc v4l2convert
จะใช้ GPU สำหรับการแปลงวิดีโอด้วย การใช้เครื่องหมายคำพูด "... " อนุญาตให้มีพารามิเตอร์บางตัวรวมอยู่ในชื่อตัวแปลง
-VS VideoSink เลือก GTREAMER VIDEOSINK แทนที่จะเป็นค่าเริ่มต้น "AutoVideOsink" ซึ่งเลือกให้คุณ ตัวเลือก VideoSink บางตัว ได้แก่ : Ximagesink, xvimagesink, vaapisink (สำหรับกราฟิก Intel), gtksink, glimagesink, waylandsink, osxvideosink (สำหรับ macOS), kmssink (สำหรับระบบที่ไม่มี x11 เช่น raspberry pi os lite) FPS) การใช้เครื่องหมายคำพูด "... " อนุญาตให้มีพารามิเตอร์บางอย่างที่รวมอยู่ในชื่อ VideoSink ตัวอย่างเช่นโหมด เต็มหน้าจอ ได้รับการสนับสนุนโดยปลั๊กอิน Vaapisink และได้รับโดยใช้ -vs "vaapisink fullscreen=true"
; สิ่งนี้ยังใช้งานได้กับ waylandsink
ไวยากรณ์ของตัวเลือกดังกล่าวมีความเฉพาะเจาะจงกับปลั๊กอินที่กำหนด (ดูเอกสาร Gstreamer) และวิดีโอบางอย่างของ VideoSink อาจไม่ทำงานในระบบของคุณ
-vs 0 ยับยั้งการแสดงผลของวิดีโอสตรีม ในโหมดมิเรอร์หน้าจอของไคลเอนต์ยังคงมิเรอร์ในอัตราที่ลดลง 1 เฟรมต่อวินาที แต่ไม่ได้แสดงผลหรือแสดง ตัวเลือกนี้ควรใช้เสมอหากเซิร์ฟเวอร์เป็น "หัวหัว" (โดยไม่มีหน้าจอที่แนบมาเพื่อแสดงวิดีโอ) และใช้เพื่อแสดงเสียงเท่านั้นซึ่งจะเป็นเสียงที่ถูกบีบอัดของ AAC ในโหมดมิเรอร์ด้วยวิดีโอที่ไม่ได้รับ Apple Lossless Audio ในโหมด AirPlay เท่านั้น
-V4L2 การตั้งค่าวิดีโอสำหรับฮาร์ดแวร์ H264 Decoding ใน GPU โดย Video4Linux2 เทียบเท่ากับ -vd v4l2h264dec -vc v4l2convert
-BT709 วิธีแก้ปัญหาสำหรับความล้มเหลวของปลั๊กอิน Video4Linux2 รุ่นเก่าเพื่อรับรู้การใช้ Apple ของ Apple ที่ไม่ธรรมดา (แต่ได้รับอนุญาต) ตัวแปร "สีเต็มช่วง" ของมาตรฐานสี BT709 สำหรับทีวีดิจิตอล สิ่งนี้ไม่จำเป็นอีกต่อไปโดย Gstreamer-1.20.4 และแบ็คพอร์ทจากมัน
-rpi เทียบเท่ากับ "-v4l2" (ไม่ถูกต้องสำหรับ Raspberry Pi Model 5 และลบออกใน UxPlay 1.67)
-rpigl เทียบเท่ากับ "-rpi -vs glimagesink" (ลบออกตั้งแต่ UXPlay 1.67)
-rpifb เทียบเท่ากับ "-rpi -vs kmssink" (ลบออกตั้งแต่ uxplay 1.67)
-rpiwl เทียบเท่ากับ "-rpi -vs waylandsink" (ลบออกตั้งแต่ UXPlay 1.67)
-As Audiosink เลือก Gstreamer Audiosink แทนที่จะปล่อยให้ Autoaudiosink เลือกให้คุณ ตัวเลือก Audiosink บางตัว ได้แก่ : Pulsesink, Alsasink, Pipewiresink, Osssink, OSS4SINK, Jackaudiosink, Osxaudiosink (สำหรับ MacOS), Wasapisink, DirectSoundSink (สำหรับ Windows) การใช้เครื่องหมายคำพูด "... " อาจอนุญาตให้มีพารามิเตอร์เสริมบางอย่าง (เช่น -as "alsasink device=..."
เพื่อระบุอุปกรณ์เอาต์พุตที่ไม่ได้เปลี่ยนค่า) ไวยากรณ์ของตัวเลือกดังกล่าวมีความเฉพาะเจาะจงกับปลั๊กอินที่กำหนด (ดูเอกสาร Gstreamer) และตัวเลือกบางอย่างของ Audiosink อาจไม่ทำงานในระบบของคุณ
-As 0 (หรือเพียงแค่ -A ) ยับยั้งการเล่นของเสียงสตรีม แต่แสดงวิดีโอสตรีม
-AL X ระบุแฝงเสียง X ในวินาที (ทศนิยม) วินาทีในเสียงเท่านั้น (ALAC) ที่รายงานไปยังลูกค้า อนุญาตให้มีค่าในช่วง [0.0, 10.0] วินาทีและจะถูกแปลงเป็นไมโครวินาทีทั้งหมด ค่าเริ่มต้นคือ 0.25 วินาที (250000 USEC) (อย่างไรก็ตามลูกค้าดูเหมือนจะเพิกเฉยต่อความล่าช้าที่รายงานนี้ดังนั้นตัวเลือกนี้ดูเหมือนจะไม่ทำงาน)
-CA FileName มีไฟล์ (ที่ ชื่อไฟล์ สามารถรวมเส้นทางเต็ม) ที่ใช้สำหรับเอาต์พุตของ "cover art" (จาก Apple Music ฯลฯ ) ในโหมด ALAC แบบเสียงเท่านั้น ไฟล์นี้ถูกเขียนทับด้วยหน้าปกล่าสุดเมื่อมาถึง Cover Art (รูปแบบ JPEG) จะถูกยกเลิกหากไม่ได้ใช้ตัวเลือกนี้ ใช้กับตัวแสดงภาพที่โหลดภาพใหม่หากมีการเปลี่ยนแปลงหรือเป็นประจำ ( เช่น หนึ่งครั้งต่อวินาที) เพื่อให้ได้สิ่งนี้ให้เรียกใช้ " uxplay -ca [path/to/]filename &
" ในพื้นหลังจากนั้นเรียกใช้ตัวดูภาพในเบื้องหน้า ตัวอย่างการใช้ feh
เป็นผู้ชม: เรียกใช้ " feh -R 1 [path/to/]filename
" (ในหน้าต่างเทอร์มินัลเดียวกันซึ่ง UXPLAY ถูกใส่ลงในพื้นหลัง) หากต้องการเลิกใช้ ctrl-C fg ctrl-C
เพื่อยุติการดูภาพนำ