Catatan: Streaming audio multi-ruangan AirPlay2 tidak didukung: gunakan sinkronisasi shairport untuk itu.
.
Instal uxplay pada sistem Linux berbasis Debian dengan " sudo apt install uxplay
"; di FreeBSD dengan " sudo pkg install uxplay
". Juga tersedia pada sistem berbasis Arch melalui AUR. Sejak v. 1.66, uxplay kini juga dikemas dalam format RPM oleh Fedora 38 (" sudo dnf install uxplay
").
Untuk distribusi berbasis RPM lainnya yang belum mengemas UxPlay, "specfile" RPM uxplay.spec kini disediakan dengan rilis terkini (lihat "Aset" mereka), dan juga dapat ditemukan di direktori teratas sumber UxPlay. Lihat bagian tentang penggunaan file spesifikasi ini untuk membuat paket RPM yang dapat diinstal.
Setelah instalasi:
(Di Linux dan *BSD): jika firewall aktif di server hosting UxPlay, pastikan port jaringan default (UDP 5353) untuk kueri mDNS/DNS-SD terbuka (lihat Pemecahan Masalah di bawah untuk detail lebih lanjut); buka juga tiga port UDP dan tiga port TCP untuk Uxplay, dan gunakan opsi "uxplay -p" (lihat " man uxplay
" atau " uxplay -h
").
Bahkan jika Anda menginstal paket biner uxplay distribusi Anda yang telah dikompilasi sebelumnya, Anda mungkin perlu membaca petunjuk di bawah ini untuk menjalankan UxPlay guna melihat paket plugin GStreamer distribusi mana yang juga harus Anda instal.
Untuk mode Audio saja (Apple Music, dll.) kualitas terbaik diperoleh dengan opsi "uxplay -async", tetapi ada latensi 2 detik yang diberlakukan oleh iOS.
Tambahkan opsi UxPlay apa pun yang ingin Anda gunakan sebagai default ke file startup ~/.uxplayrc
(lihat " man uxplay
" atau " uxplay -h
" untuk format dan kemungkinan lokasi lainnya). Khususnya, jika sistem Anda menggunakan sistem audio PipeWire atau video Wayland, Anda mungkin ingin menambahkan "as pipewiresink" atau "vs waylandsink" sebagai default pada file. (Output dari perintah terminal "ps waux | grep pulse" atau "pactl info" akan berisi "pipewire" jika sistem Linux/BSD Anda menggunakannya).
Di Raspberry Pi: Jika Anda menggunakan Ubuntu 22.10 atau versi lebih lama, GStreamer harus di-patch untuk menggunakan decoding video perangkat keras oleh GPU Broadcom (juga disarankan tetapi opsional untuk Raspberry Pi OS (Bullseye): gunakan opsi " uxplay -bt709
" jika Anda tidak menggunakan tambalannya).
Untuk (dengan mudah) mengkompilasi UxPlay terbaru dari sumber, lihat bagian Mendapatkan UxPlay.
Proyek ini adalah server AirPlay2 Mirror unix open source GPLv3 untuk Linux, macOS, dan *BSD. Ini awalnya dikembangkan oleh antimof menggunakan kode dari RPiPlay berbasis OpenMAX, yang berasal dari AirplayServer, shairplay, dan playfair. (Situs antimof tidak lagi terlibat dalam pengembangan, tetapi secara berkala memposting pembaruan yang diambil dari situs utama UxPlay yang baru).
UxPlay diuji pada sejumlah sistem, termasuk (antara lain) Debian (10 "Buster", 11 "Bullseye", 12 "Bookworm"), Ubuntu (20.04 LTS, 22.04 LTS, 23.04 (juga turunan Ubuntu Linux Mint, Pop! _OS), Red Hat dan klonnya (Fedora 38, Rocky Linux 9.2), openSUSE Leap 15.5, Mageia 9, OpenMandriva "ROME", PCLinuxOS, Arch Linux, Manjaro, dan dapat dijalankan di sistem Linux apa pun. Juga diuji pada macOS Catalina dan Ventura (Intel) dan Sonoma (M2), FreeBSD 14.0, Windows 10 dan 11 (64 bit).
Pada Raspberry Pi 4 model B, diuji pada Raspberry Pi OS (Bullseye dan Bookworm) (32- dan 64-bit), Ubuntu 22.04 LTS dan 23.04, Manjaro RPi4 23.02, dan (tanpa decoding video perangkat keras) pada openSUSE 15.5. Juga diuji pada Raspberry Pi Zero 2 W, 3 model B+, dan sekarang 5.
Kegunaan utamanya adalah bertindak seperti AppleTV untuk pencerminan layar (dengan audio) klien iOS/iPadOS/macOS (iPhone, iPod Touch, iPad, komputer Mac) pada tampilan server host yang menjalankan Linux, macOS, atau unix lainnya (dan sekarang juga Microsoft Windows). UxPlay mendukung protokol AirPlay2 Apple menggunakan "Protokol Lama", tetapi beberapa fitur tidak ada. (Detail tentang apa yang diketahui publik tentang protokol AirPlay 2 Apple dapat ditemukan di sini, di sini, dan di sini; lihat juga pyatv yang dapat menjadi sumber untuk menambahkan protokol modern.) Meskipun tidak ada jaminan bahwa rilis iOS di masa mendatang akan tetap mendukung "Protokol Warisan ", iOS 17 terus mendukung.
Server UxPlay dan kliennya harus berada di jaringan area lokal yang sama, di mana server mDNS/DNS-SD Bonjour/Zeroconf juga berjalan (hanya layanan "Service Discovery" DNS-SD yang benar-benar diperlukan, tidak perlu bahwa jaringan lokal juga bertipe berbasis mDNS ".local"). Di server Linux dan BSD Unix, ini biasanya disediakan oleh Avahi, melalui layanan avahi-daemon, dan disertakan di sebagian besar distribusi Linux (layanan ini juga dapat disediakan oleh server macOS, iOS, atau Windows).
Koneksi ke server UxPlay oleh klien iOS/MacOS dapat dimulai baik dalam mode AirPlay Mirror (yang mengalirkan audio AAC yang dikompresi secara lossy saat mencerminkan layar klien, atau dalam mode AirPlay Audio alternatif yang mengalirkan audio Apple Lossless (ALAC) tanpa pencerminan layar . Dalam mode Audio , metadata ditampilkan di terminal uxplay; jika opsi UxPlay -ca <name>
digunakan, sampul yang menyertainya juga dikeluarkan ke file yang diperbarui secara berkala <name>
. dilihat dengan (memuat ulang) penampil grafis pilihan Anda. Beralih antara mode Cermin dan Audio selama koneksi aktif dimungkinkan: dalam mode Cermin , hentikan pencerminan (atau tutup jendela cermin) dan mulai koneksi mode Audio , beralih kembali dengan memulai a Koneksi mode cermin ; tampilan cover-art berhenti/dimulai ulang saat Anda keluar/masuk kembali ke mode Audio .
Perhatikan bahwa video-DRM Apple (seperti yang ditemukan di konten "aplikasi Apple TV" di klien) tidak dapat didekripsi oleh UxPlay, dan aplikasi Apple TV tidak dapat ditonton menggunakan mode AirPlay Mirror UxPlay (hanya audio yang tidak dilindungi yang akan dialirkan, dalam AAC format), namun konten video dan audio dari aplikasi bebas DRM seperti "aplikasi YouTube" akan dialirkan oleh UxPlay dalam mode Cermin.
Karena UxPlay saat ini tidak mendukung streaming video non-Mirror AirPlay (di mana klien mengontrol server web di server AirPlay yang secara langsung menerima konten HLS untuk menghindarinya didekodekan dan dikodekan ulang oleh klien), gunakan ikon untuk video AirPlay di aplikasi seperti aplikasi YouTube hanya akan mengirimkan audio (dalam format ALAC lossless) tanpa video yang menyertainya (ada rencana untuk mendukung video HLS di rilis UxPlay mendatang)
UxPlay menggunakan "plugin" GStreamer untuk merender audio dan video. Ini berarti video dan audio didukung secara langsung, menggunakan pilihan plugin. AirPlay mengalirkan video dalam format h264: dekode gstreamer bersifat agnostik plugin, dan menggunakan dekoder h264 perangkat keras GPU yang dipercepat jika tersedia; jika tidak, decoding perangkat lunak digunakan.
VAAPI untuk grafis terintegrasi Intel dan AMD, NVIDIA dengan driver sumber terbuka "Nouveau".
Dengan GPU Intel atau AMD, decoding perangkat keras dengan plugin gstreamer VAAPI sumber terbuka lebih disukai. Driver sumber terbuka "Nouveau" untuk grafis NVIDIA juga pada prinsipnya didukung: lihat di sini, namun hal ini memerlukan VAAPI untuk dilengkapi dengan firmware yang diekstraksi dari driver milik NVIDIA.
NVIDIA dengan driver berpemilik
Plugin nvh264dec
(disertakan dalam gstreamer1.0-plugins-bad sejak GStreamer-1.18.0) dapat digunakan untuk mempercepat decoding video pada GPU NVIDIA setelah driver CUDA NVIDIA libcuda.so
diinstal. Untuk GStreamer-1.16.3 atau versi lebih lama, plugin ini disebut nvdec
, dan harus dibuat oleh pengguna.
Dukungan Video4Linux2 untuk decoding perangkat keras h264 pada Raspberry Pi (Pi 4B dan lebih lama)
Komputer Raspberry Pi (RPi) (diuji pada Pi 4 Model B) sekarang dapat menjalankan UxPlay menggunakan decoding video perangkat lunak, tetapi decoding h264/h265 yang dipercepat perangkat keras dengan firmware di GPU Broadcom 2835 Pi lebih disukai. UxPlay mengaksesnya menggunakan plugin GStreamer-1.22 Video4Linux2 (v4l2); Menggunakan modul kernel Linux out-of-mainline bcm2835-codec yang dikelola oleh Raspberry Pi, sejauh ini hanya disertakan dalam OS Raspberry Pi, dan dua distribusi lain (Ubuntu, Manjaro) tersedia dengan Raspberry Pi Imager. (Untuk GStreamer <1.22, lihat UxPlay Wiki) .
(Baru): Dukungan untuk decoding perangkat keras h265 (HEVC) pada Raspberry Pi (Pi 4 model B dan Pi 5)
Dukungan memang ada, namun sejauh ini belum diperoleh hasil yang memuaskan. Pi model 5 hanya menyediakan decoding yang dipercepat perangkat keras (GPU) untuk video h265, tetapi tidak untuk H264, karena CPU-nya cukup kuat untuk decoding perangkat lunak H264 yang memuaskan
Lisensi GPLv3 UxPlay tidak memiliki tambahan "pengecualian GPL" yang secara eksplisit mengizinkannya untuk didistribusikan dalam bentuk terkompilasi ketika ditautkan ke versi OpenSSL sebelum v. 3.0.0 (versi OpenSSL yang lebih lama memiliki klausa lisensi yang tidak kompatibel dengan GPL kecuali OpenSSL dapat dianggap sebagai "Perpustakaan Sistem", yang ada di *BSD). Banyak distribusi Linux memperlakukan OpenSSL sebagai "Perpustakaan Sistem", namun beberapa (misalnya Debian) tidak: dalam hal ini, masalah diselesaikan dengan menghubungkan ke OpenSSL-3.0.0 atau yang lebih baru.
Unduh dan unzip UxPlay-master.zip, atau (jika git diinstal): "git clone https://github.com/FDH2/UxPlay". Anda juga dapat mengunduh versi terbaru atau sebelumnya yang tercantum di Rilis.
(Sesuaikan instruksi ini untuk Linux berbasis non-Debian atau *BSD; untuk macOS, lihat instruksi spesifik di bawah). Lihat Pemecahan Masalah di bawah untuk bantuan jika ada kesulitan.
Anda memerlukan kompiler C/C++ (misalnya g++) dengan perpustakaan pengembangan standar yang diinstal. Sistem berbasis Debian menyediakan paket "build-essential" untuk digunakan dalam kompilasi perangkat lunak. Anda juga memerlukan pkg-config: jika tidak ditemukan oleh " which pkg-config
", instal pkg-config atau pkgconf penggantinya yang berfungsi sama. Pastikan juga cmake>=3.5 diinstal: " sudo apt install cmake
" (tambahkan build-essential
dan pkg-config
(atau pkgconf
) ke dalamnya jika diperlukan).
Pastikan distribusi Anda menyediakan OpenSSL 1.1.1 atau lebih baru, dan libplist 2.0 atau lebih baru. (Ini berarti sistem berbasis Debian 10 "Buster" (misalnya Ubuntu 18.04) atau yang lebih baru; pada sistem Debian 10 "libplist" adalah versi yang lebih lama, Anda memerlukan "libplist3".) Jika tidak, Anda mungkin perlu membangun dan menginstal ini dari sumber (lihat instruksi di akhir README ini).
Jika Anda memiliki instalasi OpenSSL non-standar, Anda mungkin perlu mengatur variabel lingkungan OPENSSL_ROOT_DIR ( misalnya , " export OPENSSL_ROOT_DIR=/usr/local/lib64
" jika di sanalah instalasinya). Demikian pula, untuk instalasi GStreamer non-standar (atau beberapa), setel variabel lingkungan GSTREAMER_ROOT_DIR ke direktori yang berisi direktori ".../gstreamer-1.0/" dari instalasi gstreamer yang harus digunakan UxPlay (jika ini misalnya "~ /my_gstreamer/lib/gstreamer-1.0/", atur lokasi ini dengan " export GSTREAMER_ROOT_DIR=$HOME/my_gstreamer/lib
").
Di jendela terminal, ubah direktori ke direktori sumber dari kode sumber yang diunduh ("UxPlay-*", "*" = "master" atau tag rilis untuk unduhan zipfile, "UxPlay" untuk unduhan "git clone"), lalu ikuti petunjuk di bawah ini:
Catatan: Secara default, UxPlay akan dibuat dengan pengoptimalan untuk komputer tempat UxPlay dibuat; jika hal ini tidak terjadi, seperti saat Anda mengemas untuk distribusi, gunakan opsi cmake -DNO_MARCH_NATIVE=ON
.
Jika Anda menggunakan Windows X11 di Linux atau *BSD, dan ingin beralih masuk/keluar mode layar penuh dengan menekan tombol (F11 atau Alt_L+Enter) UxPlay perlu dibangun dengan ketergantungan pada X11. Dimulai dengan UxPlay-1.59, ini akan dilakukan secara default JIKA pustaka pengembangan X11 diinstal dan terdeteksi. Instal ini dengan " sudo apt install libx11-dev
". Jika GStreamer <1.20 terdeteksi, perbaikan yang diperlukan oleh aplikasi berbagi layar ( misalnya Zoom) juga akan dilakukan.
-DNO_X11_DEPS=ON
.sudo apt install libssl-dev libplist-dev
". ( kecuali Anda perlu membuat OpenSSL dan libplist dari sumber ).sudo apt install libavahi-compat-libdnssd-dev
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
. (* Lewati jika Anda membuat Gstreamer dari sumber )cmake .
( Untuk build yang lebih bersih, yang berguna jika Anda memodifikasi sumbernya, ganti dengan " mkdir build; cd build; cmake ..
": Anda kemudian dapat menghapus konten direktori build
jika diperlukan, tanpa memengaruhi sumbernya. ) Juga tambahkan opsi cmake " -D
" apa pun di sini sesuai kebutuhan (misalnya, -DNO_X11_DEPS=ON
atau -DNO_MARCH_NATIVE=ON
).make
sudo make install
(Anda kemudian dapat menghapusnya dengan sudo make uninstall
di direktori yang sama tempat ini dijalankan). Ini menginstal file yang dapat dieksekusi " uxplay
" ke /usr/local/bin
, (dan menginstal halaman manual ke suatu tempat standar seperti /usr/local/share/man/man1
dan file README ke suatu tempat seperti /usr/local/share/doc/uxplay
). (Jika "man uxplay" gagal, periksa apakah $MANPATH sudah disetel: jika demikian, jalur ke halaman manual (biasanya /usr/local/share/man/) perlu ditambahkan ke $MANPATH .) Uxplay yang dapat dieksekusi juga bisa ditemukan di direktori build setelah proses build, jika Anda ingin menguji sebelum menginstal (dalam hal ini plugin GStreamer harus diinstal terlebih dahulu).
**Bagi mereka yang memiliki distribusi berbasis RPM, file spesifikasi RPM uxplay.spec juga tersedia: lihat Membuat paket rpm yang dapat diinstal.
Red Hat, atau klon seperti CentOS (sekarang dilanjutkan sebagai Rocky Linux atau Alma Linux): (sudo dnf install, atau sudo yum install) openssl-devel libplist-devel avahi-compat-libdns_sd-devel gstreamer1-devel gstreamer1-plugins-base- devel (+libX11-devel untuk layar penuh X11) (beberapa di antaranya mungkin ada di repositori add-on "CodeReady", disebut "PowerTools" oleh klon)
Mageia, PCLinuxOS, OpenMandriva: Sama seperti Red Hat, kecuali perubahan nama: (Mageia) "gstreamer1.0-devel", "gstreamer-plugins-base1.0-devel"; (OpenMandriva) "libopenssl-devel", "gstreamer-devel", "libgst-plugins-base1.0-devel". PCLinuxOS: sama seperti Mageia, tetapi menggunakan synaptic (atau apt) sebagai manajer paketnya.
openSUSE: (sudo zypper install) libopenssl-3-devel (sebelumnya libopenssl-devel) libplist-2_0-devel (sebelumnya libplist-devel) avahi-compat-mDNSResponder-devel gstreamer-devel gstreamer-plugins-base-devel (+ libX11- pengembangan untuk layar penuh X11).
Arch Linux ( Juga tersedia sebagai paket di AUR ): (sudo pacman -Syu) openssl libplist avahi gst-plugins-base.
FreeBSD: (sudo pkg install) libplist gstreamer1. Avahi-libdns atau mDNSResponder juga harus diinstal untuk menyediakan perpustakaan dns_sd. OpenSSL sudah diinstal sebagai System Library.
Pembuat RPM yang baru pertama kali harus menginstal paket rpm-build dan rpmdevtools terlebih dahulu, lalu membuat pohon rpmbuild dengan " rpmdev-setuptree
". Kemudian unduh dan salin uxplay.spec ke ~/rpmbuild/SPECS
. Di direktori itu, jalankan " rpmdev-spectool -g -R uxplay.spec
" untuk mengunduh file sumber terkait uxplay-*.tar.gz
ke ~/rpmbuild/SOURCES
("rpmdev-spectool" mungkin juga disebut "spectool" ); lalu jalankan " rpmbuild -ba uxplay.spec
" (Anda perlu menginstal semua dependensi yang diperlukan dalam laporan ini). Ini harus membuat paket RPM uxplay di subdirektori ~/rpmbuild/RPMS
. ( uxplay.spec diuji pada Fedora 38, Rocky Linux 9.2, openSUSE Leap 15.5, Mageia 9, OpenMandriva, PCLinuxOS; dapat dengan mudah dimodifikasi untuk menyertakan daftar ketergantungan untuk distribusi berbasis RPM lainnya.)
Selanjutnya install plugin GStreamer yang diperlukan dengan sudo apt install gstreamer1.0-<plugin>
. Nilai <plugin>
yang diperlukan adalah:
Distribusi berbasis Debian membagi beberapa paket plugin menjadi bagian-bagian yang lebih kecil: beberapa yang mungkin juga diperlukan termasuk " gl " untuk dukungan OpenGL (ini menyediakan videoink "-vs glimagesink", yang bisa sangat berguna di banyak sistem (termasuk Raspberry Pi ), dan harus selalu digunakan saat menggunakan decoding h264/h265 oleh GPU NVIDIA), " gtk3 " (yang menyediakan videosink "-vs gtksink"), dan " x " untuk dukungan X11, meskipun ini mungkin sudah terinstal; " vaapi " diperlukan untuk decoding video h264 yang dipercepat perangkat keras oleh grafis Intel atau AMD (tetapi tidak untuk digunakan dengan NVIDIA yang menggunakan driver berpemilik). Jika suara tidak berfungsi, plugin " alsa "", " pulseaudio ", atau " pipewire " mungkin perlu diinstal, bergantung pada cara pengaturan audio Anda.
Dalam beberapa kasus, karena masalah paten, fitur plugin libav avdec_aac yang diperlukan untuk mendekode audio AAC dalam mode cermin tidak disediakan dalam distribusi resmi: dapatkan dari repositori komunitas untuk distribusi tersebut.
Red Hat, atau klon seperti CentOS (sekarang dilanjutkan sebagai Rocky Linux atau Alma Linux): Instal gstreamer1-libav gstreamer1-plugins-bad-free (+ gstreamer1-vaapi untuk grafis Intel/AMD). Di Fedora baru-baru ini, gstreamer1-libav diganti namanya menjadi gstreamer1-plugin-libav. Untuk mendapatkan avdec_aac, instal paket dari rpmfusion.org : (dapatkan ffmpeg-libs dari rpmfusion; di RHEL atau klon, tetapi bukan Fedora terbaru, dapatkan juga gstreamer1-libav dari sana).
Mageia, PCLinuxOS, OpenMandriva: Instal gstreamer1.0-libav gstreamer1.0-plugins-bad (+ gstreamer1.0-vaapi untuk grafis Intel/AMD). Di Mageia, untuk mendapatkan avdec_aac, instal ffmpeg dari repositori "tercemar" , (yang juga menyediakan gstreamer1.0-plugins-bad yang lebih lengkap).
openSUSE: Instal gstreamer-plugins-libav gstreamer-plugins-bad (+ gstreamer-plugins-vaapi untuk grafis Intel/AMD). Untuk mendapatkan avdec_aac, instal paket libav* untuk openSUSE dari Packman "Essentials" ; rekomendasi: setelah menambahkan repositori Packman, gunakan opsi di Manajemen Perangkat Lunak YaST untuk mengalihkan semua paket sistem untuk multimedia ke Packman).
Arch Linux Instal gst-plugins-good gst-plugins-bad gst-libav (+ gstreamer-vaapi untuk grafis Intel/AMD).
FreeBSD: Instal gstreamer1-libav, gstreamer1-plugins, gstreamer1-plugins-* (* = core, good, bad, x, gtk, gl, vulkan, pulse, v4l2, ...), (+ gstreamer1-vaapi untuk Intel/ grafis AMD).
Sejak UxPlay-1.64, UxPlay dapat dimulai dengan opsi yang dibaca dari file konfigurasi, yang akan menjadi yang pertama ditemukan dari (1) file dengan jalur yang diberikan oleh variabel lingkungan $UXPLAYRC
, (2) ~/.uxplayrc
di rumah pengguna direktori ("~"), (3) ~/.config/uxplayrc
. Formatnya adalah satu opsi per baris, menghilangkan awal "-"
dari opsi baris perintah. Baris dalam file konfigurasi yang dimulai dengan "#"
dianggap sebagai komentar dan diabaikan.
Jalankan uxplay di jendela terminal . Pada beberapa sistem, Anda dapat menentukan mode layar penuh dengan opsi -fs
, atau beralih masuk dan keluar dari mode layar penuh dengan tombol F11 atau (ditahan Alt kiri)+Enter. Gunakan Ctrl-C (atau tutup jendela) untuk menghentikannya setelah selesai. Jika server UxPlay tidak terlihat oleh panel drop-down "Screen Mirroring" klien iOS, periksa apakah server DNS-SD Anda (biasanya avahi-daemon) sedang berjalan: lakukan ini di jendela terminal dengan systemctl status avahi-daemon
. Jika ini menunjukkan avahi-daemon tidak berjalan, kendalikan dengan sudo systemctl [start,stop,enable,disable] avahi-daemon
(pada sistem non-systemd, seperti *BSD, gunakan sudo service avahi-daemon [status, start, stop, restart, ...]
). Jika UxPlay terlihat, tetapi klien gagal terhubung saat dipilih, mungkin ada firewall di server yang mencegah UxPlay menerima permintaan koneksi klien kecuali beberapa port jaringan dibuka: jika firewall aktif, buka juga port UDP 5353 (untuk pertanyaan mDNS) dibutuhkan oleh Avahi . Lihat Pemecahan Masalah di bawah untuk bantuan mengenai masalah ini atau masalah lainnya.
Berbeda dengan Apple TV, server UxPlay tidak secara default mengharuskan klien untuk "memasangkan" terlebih dahulu menggunakan kode pin yang ditampilkan oleh server (setelah itu klien "mempercayai" server, dan tidak perlu mengulanginya). Sejak v1.67, Uxplay menawarkan "autentikasi pin" sebagai opsi: lihat " -pin
" dan " -reg
" di Penggunaan untuk detailnya, jika Anda ingin menggunakannya. Beberapa klien dengan MDM (Manajemen Perangkat Seluler, sering kali ada di perangkat milik perusahaan) diharuskan menggunakan autentikasi pin: UxPlay akan menyediakan ini bahkan ketika dijalankan tanpa opsi pin.
Secara default, UxPlay dikunci untuk kliennya saat ini hingga klien tersebut memutuskan koneksi; sejak UxPlay-1.58, opsi -nohold
mengubah perilaku ini sehingga ketika klien baru meminta koneksi, klien saat ini akan dihapus dan mengambil alih. UxPlay 1.66 memperkenalkan mekanisme ( -restrict
, -allow <id>
, -block <id>
) untuk mengontrol klien mana yang diizinkan untuk terhubung, menggunakan "deviceID" mereka (yang di perangkat Apple tampaknya tidak dapat diubah).
Dalam mode Cermin, GStreamer memiliki dua pilihan metode untuk memutar video dengan audio yang menyertainya: sebelum UxPlay-1.64, streaming video dan audio diputar sesegera mungkin setelah tiba (metode GStreamer " sync=false ") , dengan jam internal GStreamer yang digunakan untuk mencoba menyinkronkannya. Dimulai dengan UxPlay-1.64, metode lain (mode " sync=true " GStreamer), yang menggunakan stempel waktu dalam aliran audio dan video yang dikirim oleh klien, adalah default baru . Pada host UxPlay dengan daya decoding rendah (seperti model Raspberry Pi Zero W atau 3 B+) hal ini akan menghapus frame video yang tidak dapat didekode pada waktunya untuk diputar dengan audio, membuat video tersentak-sentak, namun tetap tersinkronisasi.
Metode lama yang tidak menghilangkan frame video akhir bekerja dengan baik pada sistem yang lebih kuat, dan masih tersedia dengan opsi UxPlay " -vsync no
"; metode ini diadaptasi untuk "live streaming", dan mungkin lebih baik bila menggunakan UxPlay sebagai monitor kedua untuk komputer Mac, misalnya, sedangkan metode berbasis stempel waktu default yang baru paling baik untuk menonton video, untuk menjaga gerakan bibir dan suara. disinkronkan. (Tanpa penggunaan stempel waktu, video pada akhirnya akan tertinggal dari audio jika tidak dapat didekodekan dengan cukup cepat: decoding video yang dipercepat perangkat keras membantu mencegah hal ini sebelumnya ketika stempel waktu tidak digunakan.)
-async
timestamp- opsi berbasis. (Contohnya mungkin jika Anda ingin mengikuti lirik Apple Music di klien sambil mendengarkan suara superior di server UxPlay). Hal ini menunda video di klien untuk mencocokkan audio di server, sehingga menyebabkan sedikit penundaan sebelum jeda atau perubahan trek yang dimulai di klien berdampak pada audio yang diputar oleh server. Kontrol volume AirPlay melemahkan volume (penguatan) hingga -30dB: rentang desibel -30:0 dapat diubah skalanya dari Rendah :0, atau Rendah : Tinggi , menggunakan opsi -db
("-db Low " atau "-db Rendah : Tinggi "), Rendah harus negatif. Penskalaan ulang bersifat linier dalam desibel. Perhatikan bahwa format audio GStreamer akan "memotong" penguatan audio apa pun di atas +20dB, jadi pertahankan Tinggi di bawah level tersebut. Opsi -taper
menyediakan profil kontrol volume AirPlay "meruncing" yang mungkin disukai beberapa pengguna.
Opsi -vsync dan -async juga memungkinkan penyesuaian penundaan audio positif (atau negatif) opsional dalam milidetik untuk penyesuaian: -vsync 20.5
menunda audio relatif terhadap video sebesar 0,0205 detik; nilai negatif memajukannya.)
Anda mungkin menemukan video ditingkatkan dengan pengaturan -fps 60 yang memungkinkan beberapa video diputar pada 60 frame per detik. (Anda dapat melihat framerate yang sebenarnya streaming dengan menggunakan -vs fpsdisplaysink, dan/atau -FPSdata.) Saat menggunakan ini, Anda harus menggunakan opsi sinkronisasi berbasis stempel waktu default -vsync
.
Sejak UxPlay-1.54, Anda dapat menampilkan "Cover Art" yang menyertainya dari sumber seperti Apple Music dalam mode Audio-Only (ALAC): jalankan " uxplay -ca <name> &
" di latar belakang, lalu jalankan penampil gambar dengan autoreload fitur: contohnya adalah "feh": jalankan " feh -R 1 <name>
" di latar depan; akhiri feh lalu Uxplay dengan " ctrl-C fg ctrl-C
".
Secara default, GStreamer menggunakan algoritme untuk mencari "videosink" (istilah GStreamer untuk driver grafis untuk menampilkan gambar) terbaik untuk digunakan. Anda dapat mengatasinya dengan opsi uxplay -vs <videosink>
. Videosink mana yang tersedia bergantung pada sistem operasi dan perangkat keras grafis Anda: gunakan " gst-inspect-1.0 | grep sink | grep -e video -e Video -e image
" untuk melihat apa yang tersedia. Beberapa kemungkinan di Linux/*BSD adalah:
glimagesink (OpenGL), waylandsink
xvimagesink , ximagesink (X11)
kmssink , fbdevsink (grafis konsol tanpa X11)
vaapisink (untuk grafis yang dipercepat perangkat keras Intel/AMD); untuk grafis perangkat keras NVIDIA (dengan CUDA) gunakan glimagesink yang digabungkan dengan " -vd nvh264dec
" (atau "nvh264sldec", varian baru yang akan menjadi "nvh264dec" di GStreamer-1.24).
Jika server "tanpa kepala" (tidak ada monitor yang terpasang, hanya menampilkan audio) gunakan -vs 0
.
GStreamer juga mencari "audiosink" terbaik; timpa pilihannya dengan -as <audiosink>
. Pilihan di Linux termasuk pulsesink, alsasink, pipewiresink, oss4sink; lihat apa yang tersedia dengan gst-inspect-1.0 | grep sink | grep -e audio -e Audio
.
Salah satu masalah umum melibatkan GStreamer yang mencoba menggunakan decoding video h264 perangkat keras yang tidak dikonfigurasi dengan benar atau tidak ada (misalnya, VAAPI). Coba " uxplay -avdec
" untuk memaksa decoding video perangkat lunak; jika ini berhasil, Anda dapat mencoba memperbaiki decoding video perangkat keras yang dipercepat jika Anda memerlukannya, atau cukup hapus instalan plugin GStreamer vaapi.
Lihat Penggunaan untuk opsi run-time lainnya.
Untuk video Framebuffer (untuk Raspberry Pi OS "Lite" dan distribusi non-X11 lainnya) gunakan KMS videosink "-vs kmssink" (framebuffer videosink DirectFB "dfbvideosink" rusak pada Pi, dan segfaults). Dalam hal ini Anda harus secara eksplisit menggunakan opsi "-vs kmssink", karena tanpanya, autovideosink tidak akan menemukan videosink yang benar.
Raspberry Pi 5 tidak menyediakan decoding perangkat keras H264 (dan tidak memerlukannya).
Pi Zero 2 W, 3 Model B+, dan 4 Model B harus menggunakan decoding perangkat keras H264 oleh GPU Broadcom, tetapi memerlukan modul kernel out-of-mainstream bcm2835_codec yang dipelihara di pohon kernel Raspberry Pi; distro yang diketahui memasoknya antara lain Raspberry Pi OS, Ubuntu, dan Manjaro-RPi4. Gunakan decoding perangkat lunak (opsi -avdec) jika modul ini tidak tersedia.
Uxplay menggunakan plugin Video4Linux2 (v4l2) dari GStreamer-1.22 dan yang lebih baru untuk mengakses GPU, jika decoding perangkat keras H264 digunakan. Ini seharusnya terjadi secara otomatis. Opsi -v4l2 dapat digunakan, tetapi biasanya yang terbaik adalah membiarkan GStreamer menemukan saluran video terbaiknya sendiri.
Pada distribusi lama (GStreamer <1.22), plugin v4l2 memerlukan patch: lihat UxPlay Wiki. OS Raspberry Pi lama (Bullseye) memiliki GStreamer-1.18.4 yang telah ditambal sebagian dan memerlukan opsi uxplay -bt709 (dan jangan gunakan -v4l2); masih lebih baik menerapkan patch lengkap dari UxPlay Wiki dalam kasus ini.
Untuk Raspberry Pi OS (Buster) "warisan ganda", tidak ada patch untuk GStreamer-1.14. Sebagai gantinya, pertama-tama buat GStreamer-1.18.6 yang lebih baru dari sumber menggunakan petunjuk ini sebelum membuat UxPlay.
Raspberry Pi 3 Model B+ yang menjalankan OS 32 bit juga dapat mengakses GPU dengan plugin GStreamer OMX (gunakan opsi " -vd omxh264dec
"), tetapi ini dirusak oleh firmware Pi 4 Model B. Dukungan OMX telah dihapus dari Raspberry Pi OS (Bullseye), tetapi hadir di Buster.
Video H265 (4K) didukung dengan decoding perangkat keras oleh GPU Broadcom pada model Raspberry Pi 5, serta pada Raspberry Pi 4 model B. Meskipun GStreamer tampaknya memanfaatkan decoding perangkat keras ini, kecepatan rendering video 4K yang memuaskan oleh UxPlay di model Raspberry Pi ini belum tercapai. Opsi "-h265" diperlukan untuk mengaktifkan dukungan h265. Koneksi ethernet kabel lebih disukai dalam mode ini (dan mungkin diperlukan oleh klien).
Bahkan dengan decoding video GPU, beberapa frame mungkin dihilangkan oleh model berdaya rendah untuk menjaga sinkronisasi audio dan video menggunakan stempel waktu. Di Legacy Raspberry Pi OS (Bullseye), raspi-config "Performance Options" memungkinkan menentukan berapa banyak memori yang akan dialokasikan ke GPU, tetapi pengaturan ini tampaknya tidak ada di Bookworm (tetapi masih dapat diatur ke misalnya 128MB dengan menambahkan baris "gpu_mem=128" di /boot/config.txt). Pi Zero 2 W (yang memiliki memori 512MB) bekerja dengan baik saat diuji di Bullseye 32 bit atau Bookworm Lite dengan alokasi 128MB untuk GPU (defaultnya sepertinya 64MB).
Opsi uxplay dasar untuk R Pi adalah uxplay [-vs <videosink>]
. Pilihan <videosink>
= glimagesink
terkadang berguna. Dengan kompositor video Wayland, gunakan <videosink>
= waylandsink
. Dengan video framebuffer, gunakan <videosink>
= kmssink
.
ssh user@remote_host
export DISPLAY=:0
nohup uxplay [options] > FILE &
Suara dan video akan diputar di host jarak jauh; "nohup" akan tetap menjalankan uxplay jika sesi ssh ditutup. Output terminal disimpan ke FILE (yang dapat berupa /dev/null untuk membuangnya)
Catatan: Fitur server AirPlay asli termasuk dalam MacOS 12 Monterey, tetapi terbatas pada perangkat keras terbaru. UXPlay dapat berjalan pada sistem macOS yang lebih lama yang tidak akan dapat menjalankan Monterey, atau dapat menjalankan Monterey tetapi tidak diputar.
Instruksi untuk macOS ini mengasumsikan bahwa alat pengembang baris xcode diinstal (jika Xcode diinstal, buka terminal, ketik "sudo xcode-select --instal" dan terima persyaratannya).
Juga diasumsikan bahwa cmake> = 3.13 diinstal: Ini dapat dilakukan dengan manajer paket MacPorts ( sudo port install cmake
), homebrew ( brew install cmake
), atau dengan unduhan dari https://cmake.org/download/. Juga instal git
jika Anda akan menggunakannya untuk mengambil UXPlay.
Selanjutnya instal Libplist dan OpenSSL-3.x. Perhatikan bahwa versi statis dari perpustakaan ini akan digunakan dalam build macOS, sehingga dapat dihapus setelah membangun UXPlay, jika Anda mau.
Jika Anda menggunakan Homebrew: brew install libplist openssl@3
Jika Anda menggunakan macports: sudo port install libplist-devel openssl3
Kalau tidak, bangun libplist dan openssl dari sumber: lihat instruksi di dekat akhir readme ini; Membutuhkan alat pengembangan (autoconf, automake, libtool, dll. ) Untuk diinstal.
Selanjutnya dapatkan rilis macOS terbaru dari GStreamer-1..0.
Menggunakan "Resmi" GStreamer (direkomendasikan untuk pengguna MacPorts dan Homebrew) : Instal rilis GStreamer untuk macOS dari https://gstreamer.freedesktop.org/download/. (Rilis ini berisi pkg-config-nya sendiri, jadi Anda tidak perlu menginstal satu.) Pasang paket GStreamer-1.0 dan GStreamer-1.0-devel. Setelah mengunduh, klik-klik pada mereka untuk menginstal (mereka menginstal ke /library/frameworks/gstreamer.framework). Pengguna Homebrew atau MacPorts tidak boleh menginstal (atau harus menghapus) gstreamer yang disediakan oleh manajer paket mereka, jika mereka menggunakan rilis "resmi".
Menggunakan GStreamer Homebrew : PKG-Config Diperlukan: ("BREW INSTAL PKG-Config GStreamer"). Ini menyebabkan sejumlah besar paket tambahan dipasang oleh homebrew sebagai dependensi. Instalasi homebrew GStreamer baru -baru ini telah dikerjakan ulang menjadi "formula" tunggal bernama gstreamer
, yang sekarang berfungsi tanpa memerlukan GST_PLUGIN_PATH untuk diatur dalam lingkungan. Homebrew Memasang GStreamer ke (HOMEBREW)/lib/gstreamer-1.0
di mana (HOMEBREW)/*
is /opt/homebrew/*
pada mac silikon apel, dan /usr/local/*
di mac intel; Jangan meletakkan plugin non-homebrew tambahan (yang Anda bangun sendiri) di sana, dan sebaliknya mengatur gst_plugin_path untuk menunjuk ke lokasi mereka (homebrew tidak menyediakan gstreamer lengkap, tetapi tampaknya memiliki segala yang dibutuhkan untuk UXPlay).
Menggunakan GStreamer yang diinstal dari MacPorts : Ini tidak disarankan, karena saat ini MacPorts GStreamer sudah lama (v1.16.2), tidak terawat, dan dibangun untuk menggunakan x11:
(Jika Anda benar-benar ingin menggunakan macports gstreamer-1.16.2, instal pkgconf ("port sudo instal pkgconf"), lalu "port sudo instal gstreamer1-gst-plugins-base-base gstreamer1-gst-plugins-greamer1-gst-plugins Gstreamer1-gst-plugins-greamer1-gst-plugins -BAD GStreamer1-GST-Libav ". Untuk dukungan X11 pada macOS, kompilasi UXPlay menggunakan opsi cmake khusus -DUSE_X11=ON
, dan jalankan dari terminal Xquartz dengan -Vs XImageSink uxplay -s 800x600
Setelah menginstal GStreamer, Bangun dan Instal UXPlay: Buka terminal dan ubah ke direktori sumber UXPlay ("UXPlay-Master" untuk unduhan zipfile, "UXPlay" untuk unduhan "Git Clone") dan membangun/menginstal dengan "CMake .; Make; sudo membuat instal "(sama untuk linux).
Menjalankan UXPlay saat memeriksa peringatan GStreamer (lakukan ini dengan "Ekspor GST_DEBUG = 2" sebelum runnng uxplay) mengungkapkan bahwa dengan default (karena UXPlay 1.64) penggunaan stempel waktu untuk sinkronisasi video, banyak bingkai video sedang dijatuhkan (hanya pada macOS), Mungkin karena kesalahan lain (tentang Videometa) yang muncul dalam peringatan GStreamer. Rekomendasi: Gunakan opsi UXPlay "no timestamp" baru -vsync no
" (Anda dapat menambahkan baris" vsync no "di file konfigurasi UXPlayRC).
Pada macOS dengan instalasi GStreamer ini, satu -satunya video yang tersedia tampaknya adalah GleMageSink (pilihan default yang dibuat oleh autovideosink) dan OsXvideosink. Judul jendela tidak menunjukkan nama server AirPlay, tetapi jendela terlihat oleh aplikasi berbagi layar (misalnya, zoom). Satu -satunya audiosink yang tersedia tampaknya adalah Osxaudiosink.
Opsi -NC selalu digunakan, apakah itu dipilih atau tidak. Ini adalah solusi untuk masalah dengan video gstreamer pada macOS: jika pipa gstreamer dihancurkan saat jendela cermin masih terbuka, sebuah segfault terjadi.
Dalam kasus kelam, pengaturan resolusi "-s wxh" tidak mempengaruhi ukuran jendela cermin terbuka awal (kecil), tetapi jendela dapat diperluas menggunakan mouse atau trackpad. Sebaliknya, jendela yang dibuat dengan "-vs osxvideosink" awalnya besar, tetapi memiliki rasio aspek yang salah (gambar peregangan); Dalam hal ini rasio aspek berubah ketika lebar jendela diubah dengan menyeret sisi; Opsi -vs "osxvideosink force-aspect-ratio=true"
dapat digunakan untuk membuat jendela memiliki rasio aspek yang benar saat pertama kali terbuka.
Unduh dan instal Bonjour SDK untuk Windows v3.0 . Anda dapat mengunduh SDK tanpa pendaftaran di softpedia.com, atau mendapatkannya dari situs resmi Apple https://developer.apple.com/download (Apple membuat Anda mendaftar sebagai pengembang untuk mengaksesnya dari situs mereka). Ini harus menginstal Bonjour SDK sebagai C:Program FilesBonjour SDK
.
(Ini untuk jendela 64-bit; build untuk jendela 32-bit harus dimungkinkan, tetapi tidak diuji.) Lingkungan build MSYS2 seperti UNIX akan digunakan: Unduh dan instal MSYS2 dari situs resmi https: // www .msys2.org/. Terima Lokasi Instalasi Default C:mysys64
.
Paket MSYS2 diinstal dengan varian dari Paket Manajer "Pacman" yang digunakan oleh Arch Linux. Buka terminal "msys2 mingw64" dari tab msys2 di menu start windows, dan perbarui instalasi msys2 baru dengan "pacman -syu". Kemudian pasang kompiler mingw-64 dan cmake
pacman -S mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc
Kompiler dengan semua dependensi yang diperlukan akan diinstal di direktori MSYS64, dengan jalur default C:/msys64/mingw64
. Di sini kita hanya akan membangun UXPlay dari baris perintah di lingkungan MSYS2 (ini menggunakan " ninja
" sebagai pengganti " make
" untuk sistem build).
Unduh UXPlay terbaru dari GitHub (untuk menggunakan git
, instal dengan pacman -S git
, lalu " git clone https://github.com/FDH2/UxPlay
") , lalu instal ketergantungan UXPlay (OpenSSL sudah diinstal dengan MSYS2):
pacman -S mingw-w64-x86_64-libplist mingw-w64-x86_64-gstreamer mingw-w64-x86_64-gst-plugins-base
Jika Anda mencoba sistem build windows yang berbeda, versi MSVC dari Gstreamer untuk Windows tersedia dari situs GStreamer resmi, tetapi hanya build MINGW 64-bit pada MSYS2 yang telah diuji.
CD ke Direktori Sumber UXPlay, lalu " mkdir build
" dan " cd build
". Proses Build mengasumsikan bahwa Bonjour SDK diinstal di C:Program FilesBonjour SDK
. Jika ada di tempat lain, atur variabel enviroment bonjour_sdk_home untuk menunjuk ke lokasinya. Kemudian bangun UXPlay dengan
cmake ..
ninja
Dengan asumsi tidak ada kesalahan di salah satu dari ini, Anda akan membangun UXPlay uxplay.exe yang dapat dieksekusi di direktori saat ini ("build"). Fitur "Sudo Make Make Instal" dan "Sudo Make Make Install" yang ditawarkan dalam bangunan lain tidak tersedia di Windows; Sebagai gantinya, lingkungan msys2 memiliki /mingw64/...
tersedia, dan Anda dapat menginstal executable uxplay.exe di C:/msys64/mingw64/bin
(plus manpage dan dokumentasi di C:/msys64/mingw64/share/...
) dengan
cmake --install . --prefix /mingw64
Untuk dapat melihat manpage, Anda perlu menginstal penampil manpage dengan " pacman -S man
".
Untuk menjalankan uxplay.exe, Anda perlu menginstal beberapa paket plugin GStreamer dengan pacman -S mingw-w64-x86_64-gst-<plugin>
, di mana yang diperlukan <plugin>
diberikan oleh
Paket plugin Gstreamer MSYS2 yang mungkin Anda gunakan terdaftar dalam paket MSYS2.
Anda juga perlu memberikan izin kepada UXPlay uxplay.exe yang dapat dieksekusi untuk mengakses data melalui firewall Windows. Anda dapat secara otomatis ditawari pilihan untuk melakukan ini ketika Anda pertama kali menjalankan UXPlay, atau Anda mungkin perlu melakukannya menggunakan Windows Settings-> UPDATE dan Security-> Windows Security-> Firewall & Network Protection-> Izinkan aplikasi melalui firewall . Jika perlindungan virus Anda menandai uxplay.exe sebagai "mencurigakan" (tetapi tanpa tanda tangan malware yang sebenarnya), Anda mungkin perlu memberikannya pengecualian.
Sekarang tes dengan menjalankan " uxplay
" (di jendela terminal MSYS2). Jika Anda perlu menentukan audioSink, ada dua pilihan utama di Windows: plugin -as directsoundsink
"-seasedsoundSink", dan plugin Windows Audio Audio Sesi (WASAPI) yang lebih modern " -as wasapisink
", yang mendukung opsi tambahan seperti
uxplay -as 'wasapisink device="<guid>"'
di mana <guid>
Menentukan perangkat audio yang tersedia oleh GUID, yang dapat ditemukan menggunakan " gst-device-monitor-1.0 Audio
": <guid>
memiliki bentuk seperti {0.0.0.00000000}.{98e35b2b-8eba-412e-b840-fd2c2492cf44}
. Jika " device
" tidak ditentukan, perangkat audio default digunakan.
Jika Anda ingin menentukan VideoSink menggunakan opsi -vs <videosink>
, beberapa pilihan untuk <videosink>
adalah d3d11videosink
, d3dvideosink
, glimagesink
, gtksink
.
-vs "d3d11videosink fullscreen-toggle-mode=property fullscreen=true"
, atau dapatkan kemampuan untuk beralih masuk dan keluar dari mode fullscreen menggunakan tombol alt-enter " Kombinasi dengan opsi -vs "d3d11videosink fullscreen-toggle-mode=alt-enter"
. Untuk kenyamanan, opsi ini akan ditambahkan jika hanya -vs d3d11videosink
dengan atau tanpa opsi layar penuh "-FS" digunakan. (Pengguna Windows mungkin ingin menambahkan " vs d3d11videosink
" (tidak ada awal " -
") ke file opsi startup UXPlay; lihat "Man UXPlay" atau "UXPlay -H".) UXPlay.exe yang dapat dieksekusi juga dapat dijalankan tanpa lingkungan MSYS2, di terminal Windows, dengan C:msys64mingw64binuxplay
.
Opsi:
-
") dalam file startup UXplay (baik diberikan oleh variabel lingkungan $UXPLAYRC
, atau ~/.uxplayrc
atau ~/.config/uxplayrc
); Baris yang dimulai dengan " #
" diperlakukan sebagai komentar, dan diabaikan. Opsi baris perintah opsi superse di file startup.-n server_name (default: uxplay); server_name@ hostname akan menjadi nama yang tampaknya menawarkan layanan AirPlay ke iPad Anda, iPhone dll, di mana nama host adalah nama server yang menjalankan UXPlay. Ini juga sekarang akan menjadi nama yang ditunjukkan di atas jendela tampilan cermin (x11).
-nh Jangan menambahkan "@ hostname " di akhir nama server AirPlay.
-H265 Aktifkan Dukungan "ScreenMulticodec" (AirPlay "fitur" BIT 42) untuk menerima video H265 (4K/HEVC) selain video H264 (1080p) dalam mode layar-mirror. Ketika opsi ini digunakan, dua "pipa video" (satu untuk H264, satu untuk H265) dibuat. Jika ada plugin Gstreamer dalam pipa yang spesifik untuk H264 atau H265, versi yang benar akan digunakan di setiap pipa. Koneksi Ethernet klien-server kabel lebih disukai daripada WiFi untuk video 4K, dan mungkin diperlukan oleh klien. Hanya perangkat Apple baru-baru ini (Mac atau iPad M1/M2, dan beberapa iPhone) yang dapat mengirim video H265 jika resolut "-s wxh" dengan H> 1080 diminta. Opsi "-H265" mengubah resolusi default ("-s" opsi) dari 1920x1080 menjadi 3840x2160, dan meninggalkan opsi framerate maksimum default ("-fps") pada 30fps.
-Pin [nnnn] : (Sejak v1.67) Gunakan otentikasi "pin" gaya Apple (satu kali) ketika klien baru terhubung untuk pertama kalinya: kode pin empat digit ditampilkan di terminal, dan klien Layar menunjukkan prompt login untuk dimasukkan. Ketika "-pin" digunakan dengan sendirinya, kode pin acak baru dipilih untuk setiap otentikasi; Jika "-pin nnnn" (misalnya, "-Pin 3939") digunakan, ini akan menetapkan kode tetap yang tidak berubah. Otentikasi menambahkan server ke daftar "server tepercaya" klien dan klien tidak perlu realutenticate asalkan kunci publik klien dan server tetap tidak berubah. (Secara default sejak v1.68, kunci publik server dihasilkan dari alamat MAC, yang dapat diubah dengan opsi -m; lihat opsi -Key untuk metode alternatif pembuatan kunci). (Tambahkan garis "pin" di file startup UXPlay jika Anda ingin server UXPlay menggunakan protokol otentikasi pin).
-Reg [ nama file ] : (Sejak v1.68). Jika "-pin" digunakan, opsi ini memelihara daftar "klien tepercaya" pin-authentikasi dalam $ home/.uxplay.register (atau secara opsional, dalam nama file ). Tanpa opsi ini, mengembalikan klien yang melewatkan otentikasi pin dipercaya dan tidak diperiksa. Opsi ini mungkin berguna jika UXplay digunakan dalam lingkungan yang lebih publik, untuk merekam detail klien; Registernya adalah teks, satu baris per klien, dengan kunci publik klien (format base-64), ID perangkat, dan nama perangkat; Mengomentari (dengan "#") atau menghapus line Deregisters klien yang sesuai (lihat opsi -restrict, -block, -papat lebih banyak cara untuk mengontrol akses klien). (Tambahkan baris "Reg" di file startup jika Anda ingin menggunakan fitur ini.)
-vsync [x] (dalam mode mirror :) Opsi ini ( sekarang default ) menggunakan cap waktu untuk menyinkronkan audio dengan video di server, dengan penundaan audio opsional dalam (desimal) milidetik ( x = "20.5" berarti penundaan 0,0205 detik: Penundaan positif atau negatif kurang dari satu detik diperbolehkan.) Ini diperlukan pada sistem daya rendah seperti Raspberry Pi tanpa decoding video perangkat keras.
-Vsync no (dalam mode mirror :) Ini mematikan sinkronisasi audio-video berbasis waktu, memulihkan perilaku default sebelum UXPlay-1.64. Sistem desktop standar tampaknya bekerja dengan baik tanpa menggunakan cap waktu: Mode ini sesuai untuk "streaming langsung" seperti menggunakan UXplay sebagai monitor kedua untuk komputer Mac, atau memantau webcam; Dengan itu, tidak ada bingkai video yang dijatuhkan.
-Async [x] (dalam mode audio-only (ALAC) :) Opsi ini menggunakan cap waktu untuk menyinkronkan audio pada server dengan video pada klien, dengan penundaan audio opsional dalam milidetik (desimal) ( x = "20.5" berarti 0,0205 detik penundaan: penundaan positif atau negatif kurang dari satu detik diizinkan.) Karena klien menambahkan penundaan video untuk memperhitungkan latensi, server dalam mode -Async menambahkan penundaan audio yang setara, yang berarti bahwa perubahan audio seperti Jeda atau perubahan trek tidak akan berlaku segera. Ini mungkin pada prinsipnya dimitigasi dengan menggunakan pengaturan latensi audio -al
untuk mengubah latensi (default 0,25 detik) yang dilaporkan server ke klien, tetapi saat ini mengubah ini tampaknya tidak memiliki efek apa pun .
-Async no . Ini masih perilaku default dalam mode hanya audio, tetapi opsi ini mungkin berguna sebagai opsi baris perintah untuk mematikan opsi -async
yang diatur dalam file konfigurasi "UXPlayRC".
-DB Low [: tinggi ] Menghidupkan kembali atenuasi pengendalian volume Airplay (gain) dari -30dB: 0db ke rendah : 0db atau rendah : tinggi . Batas bawah rendah harus negatif (atenuasi); Batas atas tinggi bisa menjadi tanda. (GStreamer membatasi volume-augmentasi dengan tinggi sehingga tidak dapat melebihi +20dB). Penyimpanan itu "datar", sehingga untuk -db -50: 10, perubahan atenuasi pemutaran oleh -7dB diterjemahkan ke -7 x (60/30) = -14dB atenuasi, dan volume maksimum (AirPlay 0DB) adalah augmentasi 10dB, dan AirPlay -30dB akan menjadi -50dB. Perhatikan bahwa nilai AirPlay minimum (-30db tepatnya) diterjemahkan ke "Mute".
-Taper menyediakan profil kontrol volume udara "meruncing" (cocok dengan yang disebut "dasl-tapering" dalam shairport-sync): setiap kali panjang volume slider (atau jumlah langkah di atas bisu, di mana 16 langkah = penuh Volume) dikurangi 50%, volume yang dirasakan dibelah dua (atenuasi 10dB). (Ini dimodifikasi pada volume rendah, untuk menggunakan volume "tidak terperangkap" jika lebih keras.)
-S WXH EG -S 1920X1080 (= "1080p"), resolusi lebar dan tinggi default dalam piksel untuk video H264. (Standarnya menjadi 3840x2160 (= "4K") ketika opsi -H265 digunakan.) Ini hanya permintaan yang dibuat untuk klien AirPlay, dan mungkin tidak akan menjadi resolusi akhir yang Anda dapatkan. W dan H adalah bilangan bulat dengan empat digit atau kurang. Perhatikan bahwa ukuran piksel tinggi adalah pengontrol yang digunakan oleh klien untuk menentukan format streaming; Lebar disesuaikan secara dinamis dengan bentuk gambar (format potret atau lansekap, tergantung pada bagaimana iPad diadakan, misalnya).
-s wxh@r seperti di atas, tetapi juga memberi tahu klien AirPlay tentang laju penyegaran layar tampilan. Default adalah R = 60 (60 Hz); R harus menjadi bilangan bulat kurang dari 256.
-O menyalakan opsi "overscerned" untuk jendela tampilan. Ini mengurangi resolusi gambar dengan menggunakan beberapa piksel yang diminta oleh opsi -s wxh (atau nilai default mereka 1920x1080) dengan menambahkan bingkai batas piksel yang tidak digunakan (yang akan hilang dalam layar layar penuh yang berlebihan, dan tidak ada ditampilkan oleh gstreamer). Rekomendasi: Jangan gunakan opsi ini kecuali ada beberapa alasan khusus untuk menggunakannya.
-FS menggunakan mode layar penuh, tetapi hanya berfungsi dengan X11, Wayland, Vaapi, dan D3D11 (Windows).
-P memungkinkan Anda untuk memilih port jaringan yang digunakan oleh UXPlay (ini perlu dibuka jika server berada di belakang firewall). Dengan sendirinya, -P menetapkan "Legacy" port TCP 7100, 7000, 7001, UDP 6000, 6001, 7011. -PN (misalnya -P 35000) mengatur port TCP dan UDP n, n+1, n+2. -P N1, N2, N3 (nilai-nilai yang dipisahkan koma) mengatur setiap port secara terpisah; -p N1, N2 Mengatur port N1, N2, N2+1. -p tcp n atau -p udp n set hanya port TCP atau UDP. Port harus dalam kisaran [1024-65535].
Jika opsi -p tidak digunakan, port dipilih secara dinamis (secara acak), yang tidak akan berfungsi jika firewall berjalan.
-Avdec Pasukan Penggunaan perangkat lunak H264 Decoding Menggunakan elemen gstreamer AVDEC_H264 (libav H264 decoder). Opsi ini harus mencegah autovideosink memilih plugin VideoSink yang dipercepat perangkat keras seperti Vaapisink.
-VP Parser memilih elemen parser H264 Pipeline Gstreamer, default adalah H264Parse. Menggunakan kutipan "..." memungkinkan opsi ditambahkan.
-VD Decoder memilih elemen decoder H264 pipa GStreamer, bukan nilai default "decodebin" yang memilihnya untuk Anda. Decoding perangkat lunak dilakukan oleh AVDEC_H264; Berbagai decoder perangkat keras meliputi: VAAPIH264DEC, NVDEC, NVH264DEC, V4L2H264DEC (ini mengharuskan perangkat keras yang sesuai tersedia). Menggunakan kutipan "..." memungkinkan beberapa parameter untuk disertakan dengan nama dekoder.
-VC Converter memilih elemen Videoconverter Pipeline GStreamer, alih -alih nilai default "VideocOnvert". Saat menggunakan decoding perangkat keras Video4Linux2 oleh GPU, -vc v4l2convert
juga akan menggunakan GPU untuk konversi video. Menggunakan kutipan "..." memungkinkan beberapa parameter untuk disertakan dengan nama konverter.
-VS VideoSink memilih VideoSink GStreamer, alih -alih nilai default "AutoVideoSink" yang memilihnya untuk Anda. Beberapa pilihan video adalah: ximageSink, xvimageSink, vaapisink (untuk grafik intel), gtksink, keliru, waylandsink, osxvideosink (untuk macOS), kmssink (untuk sistem tanpa x11, seperti raspberry pi os lite) atau fpsplaysink (yang menunjukkan streaming frame pi in lite) atau fpsplaysink (yang menunjukkan streaming frame. FPS). Menggunakan kutipan "..." memungkinkan beberapa parameter untuk disertakan dengan nama VideoSink. Misalnya, mode layar penuh didukung oleh plugin Vaapisink, dan diperoleh menggunakan -vs "vaapisink fullscreen=true"
; Ini juga berfungsi dengan waylandsink
. Sintaks dari opsi tersebut khusus untuk plugin yang diberikan (lihat dokumentasi GStreamer), dan beberapa pilihan VideoSink mungkin tidak berfungsi pada sistem Anda.
-Vs 0 Menekan tampilan video streaming. Dalam mode mirror, layar klien masih dicerminkan pada laju pengurangan 1 bingkai per detik, tetapi tidak ditampilkan atau ditampilkan. Opsi ini harus selalu digunakan jika server "tanpa kepala" (tanpa layar terlampir untuk menampilkan video), dan hanya digunakan untuk membuat audio, yang akan menjadi audio yang dikompresi dengan lossily dalam mode cermin dengan video yang tidak ada, dan ALAC berkualitas tinggi berkualitas lebih unggul Apple Lossless Audio dalam mode AirPlay Audio-Only.
-V4L2 Pengaturan Video untuk Perangkat Keras H264 DECODING VIDEO DI GPU oleh Video4Linux2. Setara dengan -vd v4l2h264dec -vc v4l2convert
.
-BT709 Solusi untuk kegagalan plugin Video4Linux2 yang lebih lama untuk mengenali penggunaan Apple dari varian "warna full-range" yang tidak umum (tetapi diizinkan) dari standar warna BT709 untuk TV digital. Ini tidak lagi diperlukan oleh GStreamer-1.20.4 dan Backports dari itu.
-RPI setara dengan "-v4l2" (tidak berlaku untuk Raspberry Pi Model 5, dan dihapus dalam UXPlay 1.67)
-rpigl setara dengan "-rpi -vs glimageSink". (Dihapus sejak UXPlay 1.67)
-rpifb setara dengan "-rpi -vs kmssink" (dihapus sejak uxplay 1.67)
-rpiwl setara dengan "-rpi -vs waylandsink". (Dihapus sejak UXPlay 1.67)
-Sebagai AudioSink memilih GStreamer AudioSink, alih -alih membiarkan AutoAudiosink memilihnya untuk Anda. Beberapa pilihan audiosink adalah: Pulsesink, Alsasink, Pipewiresink, Osssink, Oss4Sink, Jackaudiosink, Osxaudiosink (untuk MacOS), Wasapisink, DirectSoundSink (untuk Windows). Menggunakan kutipan "..." mungkin memungkinkan beberapa parameter opsional (misalnya -as "alsasink device=..."
untuk menentukan perangkat output non -default). Sintaks opsi tersebut khusus untuk plugin yang diberikan (lihat dokumentasi GStreamer), dan beberapa pilihan audioSink mungkin tidak berfungsi pada sistem Anda.
-Sebuah 0 (atau hanya -a ) menekan bermain audio yang stream, tetapi menampilkan video stream.
-AL X menentukan latensi audio X dalam (desimal) detik di Audio-Only (ALAC), yang dilaporkan ke klien. Nilai dalam kisaran [0,0, 10,0] detik diizinkan, dan akan dikonversi menjadi jumlah mikrodetik. Default adalah 0,25 detik (250000 USEC). (Namun, klien tampaknya mengabaikan latensi yang dilaporkan ini, jadi opsi ini tampaknya tidak berfungsi.)
-CA FileName menyediakan file (di mana nama file dapat menyertakan jalur lengkap) yang digunakan untuk output "sampul seni" (dari Apple Music, dll .) Dalam mode Audio-only ALAC. File ini ditimpa dengan sampul seni terbaru saat tiba. Cover Art (format JPEG) dibuang jika opsi ini tidak digunakan. Gunakan dengan penampil gambar yang memuat ulang gambar jika berubah, atau secara teratur ( misalnya sekali per detik.). Untuk mencapai hal ini, jalankan " uxplay -ca [path/to/]filename &
" di latar belakang, lalu jalankan pemirsa gambar di latar depan. Contohnya, menggunakan feh
sebagai penonton: jalankan " feh -R 1 [path/to/]filename
" (di jendela terminal yang sama di mana uxplay dimasukkan ke latar belakang). Untuk berhenti, gunakan ctrl-C fg ctrl-C
untuk menghentikan penampil gambar, bawa