참고: AirPlay2 멀티룸 오디오 스트리밍은 지원되지 않습니다. 이를 위해서는 shairport-sync를 사용하세요.
.
" sudo apt install uxplay
"를 사용하여 Debian 기반 Linux 시스템에 uxplay를 설치합니다. FreeBSD에서는 " sudo pkg install uxplay
"를 사용합니다. AUR을 통해 Arch 기반 시스템에서도 사용할 수 있습니다. v. 1.66부터 uxplay는 이제 Fedora 38(" sudo dnf install uxplay
")에 의해 RPM 형식으로도 패키징됩니다.
아직 UxPlay를 패키징하지 않은 다른 RPM 기반 배포판의 경우 RPM "specfile" uxplay.spec 이 이제 최신 릴리스("자산" 참조)와 함께 제공되며 UxPlay 소스 최상위 디렉토리에서도 찾을 수 있습니다. 설치 가능한 RPM 패키지를 구축하려면 이 사양 파일을 사용하는 방법에 대한 섹션을 참조하세요.
설치 후:
(Linux 및 *BSD): UxPlay를 호스팅하는 서버에서 방화벽이 활성화된 경우 mDNS/DNS-SD 쿼리에 대한 기본 네트워크 포트(UDP 5353)가 열려 있는지 확인하세요(자세한 내용은 아래 문제 해결 참조). 또한 Uxplay용 UDP 포트 3개와 TCP 포트 3개를 열고 "uxplay -p " 옵션을 사용하십시오(" man uxplay
" 또는 " uxplay -h
" 참조).
배포판의 사전 컴파일된 uxplay 바이너리 패키지를 설치하더라도 배포판의 어떤 GStreamer 플러그인 패키지 도 설치해야 하는지 확인하려면 UxPlay 실행에 대한 아래 지침을 읽어야 할 수도 있습니다.
오디오 전용 모드(Apple Music 등)의 경우 "uxplay -async" 옵션을 사용하면 최상의 품질을 얻을 수 있지만 iOS에서는 2초의 대기 시간이 발생합니다.
기본값으로 사용하려는 UxPlay 옵션을 시작 파일 ~/.uxplayrc
에 추가합니다(형식 및 기타 가능한 위치는 " man uxplay
" 또는 " uxplay -h
" 참조). 특히 시스템이 PipeWire 오디오 또는 Wayland 비디오 시스템을 사용하는 경우 파일에 기본값으로 "aspipewiresink" 또는 "vs waylandsink"를 추가할 수 있습니다. (Linux/BSD 시스템에서 사용하는 경우 터미널 명령 "ps waux | grep pulse" 또는 "pactl info"의 출력에 "pipewire"가 포함됩니다).
Raspberry Pi: Ubuntu 22.10 이하를 사용하는 경우 Broadcom GPU에 의한 하드웨어 비디오 디코딩을 사용하려면 GStreamer를 패치해야 합니다(Raspberry Pi OS(Bullseye)의 경우 권장되지만 선택 사항: 사용하지 않는 경우 " uxplay -bt709
" 옵션 사용) 패치).
소스에서 최신 UxPlay를 (쉽게) 컴파일하려면 UxPlay 얻기 섹션을 참조하세요.
이 프로젝트는 Linux, macOS 및 *BSD용 GPLv3 오픈 소스 unix AirPlay2 미러 서버입니다. 처음에는 AirplayServer, shairplay 및 playfair에서 파생된 OpenMAX 기반 RPiPlay의 코드를 사용하여 antimof에 의해 개발되었습니다. (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 2W, 3 모델 B+ 및 현재 5에서도 테스트되었습니다.
주요 용도는 Linux, macOS 또는 기타 Unix를 실행하는 호스트의 서버 디스플레이에서 iOS/iPadOS/macOS 클라이언트(iPhone, iPod Touch, iPad, Mac 컴퓨터)의 화면 미러링(오디오 포함)을 위해 AppleTV처럼 작동하는 것입니다. (이제 Microsoft Windows도 마찬가지입니다). UxPlay는 "Legacy Protocol"을 사용하여 Apple의 AirPlay2 프로토콜을 지원하지만 일부 기능이 누락되어 있습니다. (Apple의 AirPlay 2 프로토콜에 대해 공개적으로 알려진 자세한 내용은 여기, 여기 및 여기에서 확인할 수 있습니다. 최신 프로토콜을 추가하기 위한 리소스가 될 수 있는 pyatv도 참조하세요.) 향후 iOS 릴리스가 "레거시 프로토콜"을 계속 지원할 것이라는 보장은 없습니다. ", iOS 17은 계속 지원됩니다.
UxPlay 서버와 해당 클라이언트는 Bonjour/Zeroconf mDNS/DNS-SD 서버 도 실행 중인 동일한 LAN에 있어야 합니다(DNS-SD "서비스 검색" 서비스만 엄격히 필요하며, 로컬 네트워크도 ".local" mDNS 기반 유형이어야 합니다. Linux 및 BSD Unix 서버에서 이는 일반적으로 Avahi에서 avahi-daemon 서비스를 통해 제공되며 대부분의 Linux 배포판에 포함되어 있습니다(이 서비스는 macOS, iOS 또는 Windows 서버에서도 제공될 수 있음).
iOS/MacOS 클라이언트에 의한 UxPlay 서버 연결은 AirPlay 미러 모드(클라이언트 화면을 미러링하는 동안 손실 압축된 AAC 오디오를 스트리밍) 또는 화면 미러링 없이 ALAC(Apple Lossless) 오디오를 스트리밍하는 대체 AirPlay 오디오 모드에서 시작할 수 있습니다. 오디오 모드에서는 메타데이터가 uxplay 터미널에 표시됩니다. UxPlay 옵션 -ca
사용하면 함께 제공되는 표지 아트도 주기적으로 업데이트되는
파일로 출력되며 (다시 로드)로 볼 수 있습니다. 선택한 그래픽 뷰어 활성 연결 중에 미러 와 오디오 모드 간 전환이 가능합니다. 미러 모드에서는 미러링을 중지하고(또는 미러 창을 닫고) 오디오 모드 연결을 시작한 다음 미러 모드 연결을 시작하여 다시 전환합니다 . 오디오 모드를 나가거나 다시 들어갈 때 아트 디스플레이가 중지/다시 시작됩니다 .
Apple 비디오-DRM(클라이언트의 "Apple TV 앱" 콘텐츠에 있음)은 UxPlay로 해독할 수 없으며 Apple TV 앱은 UxPlay의 AirPlay 미러 모드를 사용하여 시청할 수 없습니다(보호되지 않은 오디오만 AAC로 스트리밍됩니다). 형식), 그러나 "YouTube 앱"과 같은 DRM 프리 앱의 비디오 및 오디오 콘텐츠는 UxPlay를 통해 미러 모드로 스트리밍됩니다.
UxPlay는 현재 미러가 아닌 AirPlay 비디오 스트리밍(클라이언트가 HLS 콘텐츠를 디코딩하고 다시 인코딩하는 것을 방지하기 위해 HLS 콘텐츠를 직접 수신하는 AirPlay 서버의 웹 서버를 제어함)을 지원하지 않으므로 AirPlay 비디오에 대한 아이콘을 사용하여 YouTube 앱과 같은 앱은 함께 제공되는 비디오 없이 오디오(무손실 ALAC 형식)만 전송합니다(향후 UxPlay 릴리스에서 HLS 비디오를 지원할 계획이 있습니다).
UxPlay는 오디오 및 비디오 렌더링을 위해 GStreamer "플러그인"을 사용합니다. 이는 선택한 플러그인을 사용하여 비디오와 오디오가 "즉시" 지원된다는 의미입니다. AirPlay는 h264 형식으로 비디오를 스트리밍합니다. gstreamer 디코딩은 플러그인에 구애받지 않으며 가능한 경우 가속 GPU 하드웨어 h264 디코더를 사용합니다. 그렇지 않은 경우 소프트웨어 디코딩이 사용됩니다.
Intel 및 AMD 통합 그래픽용 VAAPI, "Nouveau" 오픈 소스 드라이버가 포함된 NVIDIA
Intel 또는 AMD GPU의 경우 오픈 소스 VAAPI gstreamer 플러그인을 사용한 하드웨어 디코딩이 바람직합니다. NVIDIA 그래픽용 오픈 소스 "Nouveau" 드라이버도 원칙적으로 지원됩니다. 여기를 참조하세요. 하지만 이를 위해서는 독점 NVIDIA 드라이버에서 추출한 펌웨어로 VAAPI를 보완해야 합니다.
독점 드라이버를 갖춘 NVIDIA
nvh264dec
플러그인(GStreamer-1.18.0부터 gstreamer1.0-plugins-bad에 포함됨)은 NVIDIA의 CUDA 드라이버 libcuda.so
가 설치된 후 NVIDIA GPU에서 비디오 디코딩을 가속화하는 데 사용할 수 있습니다. GStreamer-1.16.3 이하의 경우 플러그인은 nvdec
라고 하며 사용자가 빌드해야 합니다.
Raspberry Pi(Pi 4B 및 이전 버전)에서 h264 하드웨어 디코딩을 위한 Video4Linux2 지원
Raspberry Pi(RPi) 컴퓨터(Pi 4 모델 B에서 테스트됨)는 이제 소프트웨어 비디오 디코딩을 사용하여 UxPlay를 실행할 수 있지만 Pi의 Broadcom 2835 GPU의 펌웨어에 의한 하드웨어 가속 h264/h265 디코딩이 선호됩니다. UxPlay는 GStreamer-1.22 Video4Linux2(v4l2) 플러그인을 사용하여 이에 액세스합니다. 지금까지 Raspberry Pi OS에만 포함된 Raspberry Pi에서 관리하는 메인라인 외부 Linux 커널 모듈 bcm2835-codec과 Raspberry Pi Imager에서 사용할 수 있는 다른 두 배포판(Ubuntu, Manjaro)을 사용합니다. (GStreamer < 1.22의 경우 UxPlay Wiki를 참조하세요.)
(신규): Raspberry Pi(Pi 4 모델 B 및 Pi 5)에서 h265(HEVC) 하드웨어 디코딩 지원
지원이 이루어지고 있지만 아직까지 만족스러운 결과를 얻지 못했습니다. Pi 모델 5는 h265 비디오에 대해 하드웨어 가속(GPU) 디코딩만 제공하지만 H264는 제공하지 않습니다. CPU는 만족스러운 소프트웨어 H264 디코딩을 수행할 만큼 강력하기 때문입니다.
UxPlay의 GPLv3 라이선스에는 v. 3.0.0 이전의 OpenSSL 버전에 연결될 때 컴파일된 형식으로 배포할 수 있도록 명시적으로 허용하는 추가된 "GPL 예외"가 없습니다(OpenSSL의 이전 버전에는 OpenSSL이 가능하지 않은 한 GPL과 호환되지 않는 라이선스 조항이 있습니다). *BSD에 있는 "시스템 라이브러리"로 간주됩니다. 많은 Linux 배포판은 OpenSSL을 "시스템 라이브러리"로 취급하지만 일부(예: Debian)는 그렇지 않습니다. 이 경우 OpenSSL-3.0.0 이상과 연결하면 문제가 해결됩니다.
UxPlay-master.zip을 다운로드하여 압축을 풀거나 (git이 설치된 경우) "git clone https://github.com/FDH2/UxPlay"를 실행하세요. 릴리스에 나열된 최신 또는 이전 버전을 다운로드할 수도 있습니다.
(Debian 기반이 아닌 Linux 또는 *BSD의 경우 이 지침을 적용하세요. macOS의 경우 아래의 특정 지침을 참조하세요.) 문제가 있는 경우 아래 문제 해결을 참조하세요.
표준 개발 라이브러리가 설치된 C/C++ 컴파일러(예: g++)가 필요합니다. 데비안 기반 시스템은 소프트웨어 컴파일에 사용하기 위한 "빌드 필수" 패키지를 제공합니다. 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을 UxPlay가 사용해야 하는 gstreamer 설치의 ".../gstreamer-1.0/" 디렉터리가 포함된 디렉터리로 설정합니다( 예 : "~ /my_gstreamer/lib/gstreamer-1.0/", " export GSTREAMER_ROOT_DIR=$HOME/my_gstreamer/lib
")을 사용하여 이 위치를 설정합니다.
터미널 창에서 다운로드한 소스 코드의 소스 디렉터리("UxPlay-*", "*" = "master" 또는 zip 파일 다운로드의 경우 릴리스 태그, "git clone" 다운로드의 경우 "UxPlay")로 디렉터리를 변경한 다음 아래 지침을 따르십시오.
참고: 기본적으로 UxPlay는 그것이 구축된 컴퓨터에 대한 최적화를 통해 구축됩니다. 배포판을 패키징할 때처럼 그렇지 않은 경우에는 cmake 옵션 -DNO_MARCH_NATIVE=ON
사용하세요.
Linux 또는 *BSD에서 X11 Windows를 사용하고 키 누르기(F11 또는 Alt_L+Enter)를 사용하여 전체 화면 모드를 전환하거나 전환하려면 UxPlay는 X11에 의존하여 구축되어야 합니다. UxPlay-1.59부터 X11 개발 라이브러리가 설치되고 감지 되면 기본적으로 이 작업이 수행됩니다. " sudo apt install libx11-dev
"를 사용하여 설치하세요. GStreamer < 1.20이 감지되면 화면 공유 앱( 예 : Zoom)에 필요한 수정 사항도 적용됩니다.
-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
에 설치됩니다. (그리고 맨페이지는 /usr/local/share/man/man1
과 같은 표준 위치에 설치되고 README 파일은 /usr/local/share/doc/uxplay
). ("man uxplay"가 실패하면 $MANPATH가 설정되어 있는지 확인하십시오. 그렇다면 맨페이지 경로(보통 /usr/local/share/man/)를 $MANPATH 에 추가해야 합니다.) uxplay 실행 파일은 다음과 같이 할 수도 있습니다. 설치하기 전에 테스트하려는 경우 빌드 프로세스 후 빌드 디렉토리에 있습니다(이 경우 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 (전체 화면 X11의 경우 +libX11-devel) (이 중 일부는 복제본에 의해 "PowerTools"라고 불리는 "CodeReady" 추가 기능 저장소에 있을 수 있음)
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와 동일하지만 패키지 관리자로 시냅틱(또는 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. dns_sd 라이브러리를 제공하려면 avahi-libdns 또는 mDNSResponder도 설치해야 합니다. OpenSSL은 이미 시스템 라이브러리로 설치되어 있습니다.
처음으로 RPM을 빌더는 먼저 rpm-build 및 rpmdevtools 패키지를 설치한 다음 " rpmdev-setuptree
"를 사용하여 rpmbuild 트리를 만들어야 합니다. 그런 다음 uxplay.spec을 다운로드하여 ~/rpmbuild/SPECS
에 복사합니다. 해당 디렉터리에서 " rpmdev-spectool -g -R uxplay.spec
"을 실행하여 해당 소스 파일 uxplay-*.tar.gz
~/rpmbuild/SOURCES
에 다운로드합니다("rpmdev-spectool"은 "spectool"이라고도 함). ); 그런 다음 " rpmbuild -ba uxplay.spec
"을 실행합니다(이 보고서에 나오는 필수 종속성을 설치해야 합니다). ~/rpmbuild/RPMS
하위 디렉토리에 uxplay RPM 패키지가 생성되어야 합니다. ( uxplay.spec은 Fedora 38, Rocky Linux 9.2, openSUSE Leap 15.5, Mageia 9, OpenMandriva, PCLinuxOS에서 테스트되었습니다. 다른 RPM 기반 배포판에 대한 종속성 목록을 포함하도록 쉽게 수정할 수 있습니다.)
다음으로 sudo apt install gstreamer1.0-
에 필요한 GStreamer 플러그인을 설치합니다. 필요한
값은 다음과 같습니다.
Debian 기반 배포판은 일부 플러그인 패키지를 더 작은 조각으로 나눕니다. 필요할 수도 있는 일부 패키지에는 OpenGL 지원을 위한 " gl "이 포함됩니다(이것은 "-vs glimagesink" 비디오 싱크를 제공하며 이는 Raspberry Pi를 포함하여 많은 시스템에서 매우 유용할 수 있습니다) ), NVIDIA GPU에 의한 h264/h265 디코딩을 사용할 때 항상 사용해야 합니다.), " gtk3 "("-vs gtksink" 비디오 싱크 제공) 및 X11 지원을 위한 " x "(이러한 항목이 이미 설치되어 있을 수 있음) " vaapi "는 Intel 또는 AMD 그래픽의 하드웨어 가속 h264 비디오 디코딩에 필요합니다(단, 독점 드라이버를 사용하는 NVIDIA에서는 사용하지 않음). 사운드가 작동하지 않으면 오디오 설정 방법에 따라 " alsa "", " pulseaudio " 또는 " pipewire " 플러그인을 설치해야 할 수도 있습니다.
어떤 경우에는 특허 문제로 인해 미러 모드에서 AAC 오디오를 디코딩하는 데 필요한 libav 플러그인 기능 avdec_aac 가 공식 배포판에 제공되지 않습니다. 해당 배포판에 대한 커뮤니티 저장소에서 가져오십시오.
Red Hat 또는 CentOS와 같은 클론(현재는 Rocky Linux 또는 Alma Linux로 계속됨): gstreamer1-libav gstreamer1-plugins-bad-free(Intel/AMD 그래픽의 경우 + gstreamer1-vaapi)를 설치합니다. 최근 Fedora에서는 gstreamer1-libav의 이름이 gstreamer1-plugin-libav로 변경되었습니다. avdec_aac를 얻으려면 rpmfusion.org에서 패키지를 설치하십시오 . (rpmfusion에서 ffmpeg-libs를 얻으십시오. RHEL 또는 클론에서는 최근 Fedora가 아닌 경우 gstreamer1-libav도 거기에서 얻으십시오).
Mageia, PCLinuxOS, OpenMandriva: gstreamer1.0-libav gstreamer1.0-plugins-bad(Intel/AMD 그래픽의 경우 + gstreamer1.0-vaapi)를 설치합니다. Mageia에서 avdec_aac를 얻으려면 "tainted" 저장소에서 ffmpeg를 설치하십시오 (더 완전한 gstreamer1.0-plugins-bad도 제공함).
openSUSE: gstreamer-plugins-libav gstreamer-plugins-bad(Intel/AMD 그래픽의 경우 + gstreamer-plugins-vaapi)를 설치합니다. avdec_aac를 얻으려면 Packman "Essentials"에서 openSUSE용 libav* 패키지를 설치하십시오 . 권장 사항: Packman 저장소를 추가한 후 YaST 소프트웨어 관리의 옵션을 사용하여 멀티미디어용 모든 시스템 패키지를 Packman으로 전환하세요.
Arch Linux gst-plugins-good gst-plugins-bad gst-libav(Intel/AMD 그래픽의 경우 + gstreamer-vaapi)를 설치합니다.
FreeBSD: gstreamer1-libav, gstreamer1-plugins, gstreamer1-plugins-* (* = core, good, bad, x, gtk, gl, vulkan, pulse, v4l2, ...), (+ Intel의 경우 gstreamer1-vaapi/ AMD 그래픽).
UxPlay-1.64부터 UxPlay는 구성 파일에서 읽은 옵션으로 시작할 수 있습니다. 이 파일은 (1) 환경 변수 $UXPLAYRC
에 의해 지정된 경로가 있는 파일, (2) 사용자 홈의 ~/.uxplayrc
중 가장 먼저 발견됩니다. 디렉토리 ("~"), (3) ~/.config/uxplayrc
. 형식은 한 줄에 하나의 옵션이며 명령줄 옵션의 첫 번째 "-"
를 생략합니다. "#"
으로 시작하는 구성 파일의 행은 주석으로 처리되어 무시됩니다.
터미널 창에서 uxplay를 실행하세요 . 일부 시스템에서는 -fs
옵션을 사용하여 전체 화면 모드를 지정하거나 F11 또는 (왼쪽 Alt를 누른 채)+Enter 키를 사용하여 전체 화면 모드로 전환하거나 전환할 수 있습니다. 완료되면 Ctrl-C를 사용하거나 창을 닫아 종료하세요. iOS 클라이언트의 드롭다운 "화면 미러링" 패널에 UxPlay 서버가 표시되지 않으면 DNS-SD 서버(일반적으로 avahi-daemon)가 실행 중인지 확인하세요. 터미널 창에서 systemctl status avahi-daemon
으로 이 작업을 수행하세요. avahi-daemon이 실행 중이 아닌 것으로 표시되면 sudo systemctl [start,stop,enable,disable] avahi-daemon
사용하여 제어합니다(*BSD와 같은 시스템이 아닌 시스템에서는 sudo service avahi-daemon [status, start, stop, restart, ...]
사용). sudo service avahi-daemon [status, start, stop, restart, ...]
). UxPlay가 표시되지만 클라이언트가 선택되었을 때 연결에 실패하는 경우 일부 네트워크 포트가 열려 있지 않으면 UxPlay가 클라이언트 연결 요청을 수신하지 못하도록 막는 서버에 방화벽이 있을 수 있습니다. 방화벽이 활성화된 경우 UDP 포트 5353도 엽니다. (mDNS 쿼리의 경우) Avahi에 필요합니다 . 이 문제나 기타 문제에 대한 도움말은 아래 문제 해결을 참조하세요.
Apple TV와 달리 UxPlay 서버는 기본적으로 클라이언트가 서버에 표시된 핀 코드를 사용하여 처음에 서버와 "페어링"하도록 요구하지 않습니다(이후 클라이언트는 서버를 "신뢰"하므로 이를 반복할 필요가 없습니다). v1.67부터 Uxplay는 "pin-authentication"을 옵션으로 제공합니다. 사용하려는 경우 자세한 내용은 사용법의 " -pin
" 및 " -reg
"를 참조하세요. MDM(모바일 장치 관리, 종종 고용주 소유 장치에 존재)을 사용하는 일부 클라이언트는 핀 인증을 사용해야 합니다. UxPlay는 핀 옵션 없이 실행되는 경우에도 이를 제공합니다.
기본적으로 UxPlay는 해당 클라이언트가 연결을 끊을 때까지 현재 클라이언트에 잠겨 있습니다. UxPlay-1.58부터 -nohold
옵션은 새 클라이언트가 연결을 요청할 때 현재 클라이언트를 제거하고 이어받도록 이 동작을 수정합니다. UxPlay 1.66에는 "deviceID"(Apple 장치에서는 변경할 수 없는 것으로 나타남)를 사용하여 연결이 허용되는 클라이언트를 제어하는 메커니즘( -restrict
, -allow
, -block
)이 도입되었습니다.
미러 모드에서 GStreamer는 오디오와 함께 비디오를 재생하는 두 가지 방법을 선택할 수 있습니다. UxPlay-1.64 이전에는 비디오 및 오디오 스트림이 도착한 후 가능한 한 빨리 재생되었습니다(GStreamer " sync=false " 방법). , 동기화를 유지하는 데 사용되는 GStreamer 내부 시계를 사용합니다. UxPlay-1.64부터 클라이언트가 보낸 오디오 및 비디오 스트림의 타임스탬프를 사용하는 다른 방법(GStreamer의 " sync=true " 모드)이 새로운 기본값입니다 . 디코딩 성능이 낮은 UxPlay 호스트(예: Raspberry Pi Zero W 또는 3 B+ 모델)에서는 오디오와 함께 재생할 시간에 맞춰 디코딩할 수 없는 비디오 프레임이 삭제되어 비디오가 불안정해지지만 여전히 동기화됩니다.
늦은 비디오 프레임을 삭제하지 않는 이전 방법은 더 강력한 시스템에서 잘 작동했으며 UxPlay 옵션 " -vsync no
"와 함께 계속 사용할 수 있습니다. 이 방법은 "라이브 스트리밍"에 적용되며 UxPlay를 Mac 컴퓨터의 두 번째 모니터로 사용할 때 더 좋을 수 있습니다. 반면 새로운 기본 타임스탬프 기반 방법은 비디오를 시청하고 입술 움직임과 음성을 유지하는 데 가장 적합합니다. 동기화되었습니다. (타임스탬프를 사용하지 않으면 비디오가 충분히 빠르게 디코딩되지 않으면 결국 오디오보다 뒤처지게 됩니다. 이전에는 타임스탬프를 사용하지 않았을 때 하드웨어 가속 비디오 디코딩을 통해 이를 방지할 수 있었습니다.)
-async
timestamp-를 사용하세요. 기반 옵션. (예를 들어 UxPlay 서버에서 우수한 사운드를 들으면서 클라이언트에서 Apple Music 가사를 따르려는 경우가 있을 수 있습니다.) 이로 인해 클라이언트의 비디오가 서버의 오디오와 일치하도록 지연되므로 클라이언트에서 시작된 일시 중지 또는 트랙 변경이 서버에서 재생되는 오디오에 적용되기 전에 약간의 지연이 발생합니다. AirPlay 볼륨 제어는 볼륨(게인)을 최대 -30dB까지 감쇠합니다. 데시벨 범위 -30:0은 -db
("-db Low " 또는 "-db 옵션을 사용하여 Low :0 또는 Low : High 에서 다시 조정할 수 있습니다. 낮음 : 높음 "), 낮음은 음수여야 합니다. 크기 조정은 데시벨 단위로 선형입니다. GStreamer의 오디오 형식은 +20db 이상의 오디오 게인을 "클립"하므로 High를 해당 레벨 아래로 유지하십시오. -taper
옵션은 일부 사용자가 선호할 수 있는 "테이퍼형" AirPlay 볼륨 제어 프로필을 제공합니다.
-vsync 및 -async 옵션을 사용하면 미세 조정을 위해 밀리초 단위 로 선택적 포지티브(또는 네거티브) 오디오 지연 조정이 가능합니다. -vsync 20.5
비디오에 비해 오디오를 0.0205초 지연시킵니다. 음수 값을 사용하면 앞당겨집니다.)
일부 비디오를 초당 60프레임으로 재생할 수 있도록 -fps 60 설정을 통해 비디오 성능이 향상되었음을 알 수 있습니다. (-vs fpsdisplaysink 및/또는 -FPSdata를 사용하여 실제로 스트리밍되는 프레임 속도를 확인할 수 있습니다.) 이를 사용할 때는 기본 타임스탬프 기반 동기화 옵션인 -vsync
사용해야 합니다.
UxPlay-1.54부터 ALAC(오디오 전용) 모드에서 Apple Music과 같은 소스의 "커버 아트"를 표시할 수 있습니다. 백그라운드에서 " uxplay -ca
"를 실행한 다음 자동 다시 로드로 이미지 뷰어를 실행하세요. 기능: 예는 "feh"입니다. 전경에서 " feh -R 1
"을 실행합니다. feh를 종료한 다음 " ctrl-C fg ctrl-C
"를 사용하여 Uxplay를 종료합니다.
기본적으로 GStreamer는 알고리즘을 사용하여 사용할 최상의 "videosink"(이미지를 표시하는 그래픽 드라이버에 대한 GStreamer의 용어)를 검색합니다. uxplay 옵션 -vs
로 이를 무시할 수 있습니다. 사용할 수 있는 비디오 싱크는 운영 체제 및 그래픽 하드웨어에 따라 다릅니다. " gst-inspect-1.0 | grep sink | grep -e video -e Video -e image
"를 사용하여 사용 가능한 비디오 싱크를 확인하세요. Linux/*BSD에서 가능한 몇 가지 사항은 다음과 같습니다:
glimagesink (OpenGL), 웨이랜드싱크
xvimagesink , ximagesink (X11)
kmssink , fbdevsink (X11이 없는 콘솔 그래픽)
vaapisink (Intel/AMD 하드웨어 가속 그래픽용); NVIDIA 하드웨어 그래픽(CUDA 포함)의 경우 " -vd nvh264dec
"(또는 GStreamer-1.24에서 "nvh264dec"가 될 새로운 변형인 "nvh264sldec")와 결합된 glimagesink를 사용하십시오.
서버가 "헤드리스"(연결된 모니터가 없고 오디오만 렌더링)인 경우 -vs 0
사용하세요.
GStreamer는 또한 최고의 "오디오싱크"를 검색합니다. -as
로 선택을 재정의합니다. Linux에서는 pulsesink, alsasink,pipewiresink, oss4sink를 선택할 수 있습니다. gst-inspect-1.0 | grep sink | grep -e audio -e Audio
.
일반적인 문제 중 하나는 GStreamer가 잘못 구성되었거나 가속화된 하드웨어 h264 비디오 디코딩(예: VAAPI)을 사용하려고 시도하는 것과 관련이 있습니다. 소프트웨어 비디오 디코딩을 강제하려면 " uxplay -avdec
"를 시도하십시오. 이것이 작동하면 필요한 경우 가속 하드웨어 비디오 디코딩을 수정하거나 GStreamer vaapi 플러그인을 제거할 수 있습니다.
더 많은 런타임 옵션을 보려면 사용법을 참조하세요.
프레임 버퍼 비디오(Raspberry Pi OS "Lite" 및 기타 비X11 배포용)의 경우 KMS 비디오 싱크 "-vs kmssink"를 사용합니다(DirectFB 프레임 버퍼 비디오 싱크 "dfbvideosink"는 Pi에서 손상되고 segfaults). 이 경우 "-vs kmssink" 옵션을 명시적으로 사용해야 합니다. 이 옵션이 없으면 autovideosink가 올바른 비디오 싱크를 찾을 수 없기 때문입니다.
Raspberry Pi 5는 하드웨어 H264 디코딩을 제공하지 않으며 필요하지도 않습니다.
Pi Zero 2W, 3 Model B+ 및 4 Model B는 Broadcom GPU에 의한 하드웨어 H264 디코딩을 사용해야 하지만 Raspberry Pi 커널 트리에서 유지 관리되는 주류 커널 모듈 bcm2835_codec이 필요합니다. 이를 제공하는 것으로 알려진 배포판에는 Raspberry Pi OS, Ubuntu 및 Manjaro-RPi4가 포함됩니다. 이 모듈을 사용할 수 없는 경우 소프트웨어 디코딩(옵션 -avdec)을 사용하십시오.
Uxplay는 하드웨어 H264 디코딩이 사용되는 경우 GStreamer-1.22 이상의 Video4Linux2(v4l2) 플러그인을 사용하여 GPU에 액세스합니다. 이 작업은 자동으로 수행되어야 합니다. -v4l2 옵션을 사용할 수 있지만 일반적으로 GStreamer가 스스로 최상의 비디오 파이프라인을 찾도록 하는 것이 가장 좋습니다.
이전 배포판(GStreamer < 1.22)에서는 v4l2 플러그인에 패치가 필요합니다. UxPlay Wiki를 참조하세요. 레거시 Raspberry Pi OS(Bullseye)에는 uxplay 옵션 -bt709가 필요한(그리고 -v4l2를 사용하지 않는) 부분적으로 패치된 GStreamer-1.18.4가 있습니다. 이 경우에는 UxPlay Wiki에서 전체 패치를 적용하는 것이 더 좋습니다.
"이중 레거시" Raspberry Pi OS(Buster)의 경우 GStreamer-1.14용 패치가 없습니다. 대신, UxPlay를 빌드하기 전에 먼저 이 지침을 사용하여 소스에서 완전히 새로운 GStreamer-1.18.6을 빌드하세요.
32비트 OS를 실행하는 Raspberry Pi 3 모델 B+는 GStreamer OMX 플러그인(" -vd omxh264dec
" 옵션 사용)을 사용하여 GPU에 액세스할 수도 있지만 Pi 4 모델 B 펌웨어에서는 이 문제가 발생합니다. OMX 지원은 Raspberry Pi OS(Bullseye)에서 제거되었지만 Buster에는 있습니다.
H265(4K) 비디오는 Raspberry Pi 5 모델과 Raspberry Pi 4 모델 B의 Broadcom GPU에 의한 하드웨어 디코딩으로 지원됩니다. GStreamer는 이 하드웨어 디코딩을 활용하는 것으로 보이지만 UxPlay의 4K 비디오 렌더링 속도는 만족스럽습니다. 이 Raspberry Pi 모델은 아직 달성되지 않았습니다. h265 지원을 활성화하려면 "-h265" 옵션이 필요합니다. 이 모드에서는 유선 이더넷 연결이 선호됩니다(클라이언트에서 필요할 수도 있음).
GPU 비디오 디코딩을 사용하는 경우에도 저전력 모델에서는 타임스탬프를 사용하여 오디오와 비디오의 동기화를 유지하기 위해 일부 프레임이 삭제될 수 있습니다. 레거시 Raspberry Pi OS(Bullseye)에서는 raspi-config "성능 옵션"을 사용하여 GPU에 할당할 메모리 양을 지정할 수 있지만 Bookworm에는 이 설정이 없는 것으로 보입니다(그러나 한 줄을 추가하여 여전히 128MB로 설정할 수 있습니다). /boot/config.txt의 "gpu_mem=128"). Pi Zero 2 W(512MB 메모리 포함)는 GPU에 128MB가 할당된(기본값은 64MB인 것으로 보임) 32비트 Bullseye 또는 Bookworm Lite에서 테스트했을 때 잘 작동했습니다.
R Pi의 기본 uxplay 옵션은 uxplay [-vs
입니다.
= glimagesink
선택하는 것이 때때로 유용합니다. Wayland 비디오 합성기로
= waylandsink
사용하세요. 프레임 버퍼 비디오의 경우
= kmssink
사용하세요.
ssh user@remote_host
export DISPLAY=:0
nohup uxplay [options] > FILE &
원격 호스트에서 사운드와 비디오가 재생됩니다. "nohup"은 SSH 세션이 닫혀도 uxplay를 계속 실행합니다. 터미널 출력은 FILE에 저장됩니다(삭제하려면 /dev/null일 수 있음).
참고 : 기본 AirPlay 서버 기능은 MacOS 12 Monterey에 포함되어 있지만 최근 하드웨어로 제한됩니다. UXplay는 몬트레이를 실행할 수 없거나 몬트레이를 실행할 수는 있지만 AirPlay를 실행할 수없는 구형 MACOS 시스템에서 실행할 수 있습니다.
MACOS에 대한 이러한 지침은 Xcode 명령 줄 개발자 도구가 설치되었다고 가정합니다 (Xcode가 설치된 경우 터미널을 열고 "sudo xcode-select-Install"을 입력하고 조건을 수락).
CMake> = 3.13이 설치된 것으로 가정합니다. 패키지 관리자 Macports ( sudo port install cmake
), 홈 브루 ( brew install cmake
) 또는 https://cmake.org/download/에서 다운로드 할 수 있습니다. 또한 Uxplay를 가져 오는 데 사용하는 경우 git
설치하십시오.
다음으로 LibPlist 및 OpenSSL-3.X를 설치하십시오. 이러한 라이브러리의 정적 버전은 MACOS 빌드에 사용되므로 원하는 경우 UXPlay를 구축 한 후에는 제거 할 수 있습니다.
Homebrew를 사용하는 경우 : brew install libplist openssl@3
Macports를 사용하는 경우 : sudo port install libplist-devel openssl3
그렇지 않으면, 소스에서 libplist 및 elessl을 구축하십시오.이 readme의 끝 근처의 지침을 참조하십시오. 개발 도구 (Autoconf, Automake, Libtool 등 )를 설치해야합니다.
다음으로 GSTREAMER-1.0의 최신 MACOS 릴리스를 받으십시오.
"공식"gstreamer (Macports 및 Homebrew 사용자 모두 권장) : https://gstreamer.freedesktop.org/download/에서 MacOS 용 GStreamer 릴리스를 설치하십시오. (이 릴리스에는 자체 PKG-Config가 포함되어 있으므로 설치할 필요가 없습니다.) GSTREAMER-1.0 및 GSTREAMER-1.0-DEVEL 패키지를 모두 설치하십시오. 다운로드 후 Shift-Click을 클릭하여 설치하십시오 (/library/frameworks/gstreamer.framework에 설치). Homebrew 또는 MacPorts 사용자는 "공식"릴리스를 사용하는 경우 패키지 관리자가 제공 한 GSTREAMER를 설치하거나 제거해서는 안됩니다 .
Homebrew의 gstreamer 사용 : PKG-Config가 필요합니다. ( "Brew 설치 PKG-Config Gstreamer"). 이로 인해 많은 수의 추가 패키지가 Homebrew가 종속성으로 설치하게됩니다. Homebrew Gstreamer 설치는 최근 gstreamer
라는 단일 "공식"으로 재 작업되었으며, 이제 GST_PLUGIN_PATH가 환경에서 설정할 필요없이 작동합니다. Homebrew는 GStreamer를 (HOMEBREW)/lib/gstreamer-1.0
에 설치합니다. 여기서 (HOMEBREW)/*
는 Apple Silicon Mac에서 /opt/homebrew/*
및 /usr/local/*
; 가정 브루 플러그인을 추가하지 말고 대신 GST_PLUGIN_PATH를 해당 위치를 가리 키도록 설정하지 마십시오 (홈 브루는 완전한 GSTREAMER를 제공하지 않지만 UXPlay에 필요한 모든 것이있는 것 같습니다).
Macports에서 설치 한 GStreamer 사용 : 현재 Macports Gstreamer가 오래되었고 (v1.16.2), 인재되지 않은 상태이며 X11 : 사용하도록 제작되었으므로 권장 하지 않습니다 .
(Macports gstreamer-1.16.2를 사용하려면 pkgconf ( "sudo port install pkgconf")를 설치 한 다음 "Sudo 포트 설치 gstreamer1-gst-plugins-base gstreamer1-gst-plugins-pood gstreamer1-gst-plugins -Bad Gstreamer1-GST-Libav ". MacOS에서 X11 지원을 위해 특수 CMAKE 옵션 -DUSE_X11=ON
을 사용하여 UXPlay를 컴파일하고 -VS XimageSink가있는 Xquartz 터미널에서 실행할 때 사용시 낮은 해상도가 필요합니다. x11 : uxplay -s 800x600
.)
GSTREAMER를 설치 한 후 UXPLAY 빌드 및 설치 : 터미널을 열고 UXPlay 소스 디렉토리 (ZipFile 다운로드 용 "UXPlay-Master", "git clone"다운로드)로 변경하고 "CMAKE.; MAKE; MAKE; Sudo는 설치 "(Linux와 동일).
uxplay 실행 gstreamer 경고 (runnng uxplay 전에 "export gst_debug = 2"로 수행)는 기본값 (uxplay 1.64 이후) 비디오 동기화에 타임 스탬프를 사용하면 많은 비디오 프레임이 삭제되고 있음을 보여줍니다. 아마도 GSTREAMER 경고에 나타나는 또 다른 오류 (Videometa에 대한)로 인해 발생할 수 있습니다. 권장 사항 : 새 UXplay "No Timestamp"옵션 " -vsync no
" (uxplayrc 구성 파일에 "vsync no"를 추가 할 수 있음).
GSTREAMER를 설치 한 MACOS에서 사용 가능한 유일한 비디오 싱크는 GlimageSink (AutovideOsink에서 기본 선택) 및 OsxVideOsink로 보입니다. 창 제목에는 AirPlay 서버 이름이 표시되지 않지만 창은 화면 공유 앱 (예 : Zoom)으로 보입니다. 사용 가능한 유일한 오디오 싱크는 Osxaudiosink 인 것 같습니다.
옵션 -NC는 선택 여부에 관계없이 항상 사용됩니다. 이것은 MacOS에서 GSTREAMER VideoSinks의 문제에 대한 해결 방법입니다. 거울 창이 여전히 열려있는 동안 GSTREAMER 파이프 라인이 파괴되면 SEGFAULT가 발생합니다.
GlimageSink의 경우 해상도 설정 "-S WXH"는 (작은) 초기 OpenGL 미러 창 크기에 영향을 미치지 않지만 마우스 또는 트랙 패드를 사용하여 창을 확장 할 수 있습니다. 대조적으로, "-vs osxvideosink"로 생성 된 창이 처음에는 크지 만 종횡비가 잘못되었습니다 (스트레칭 이미지). 이 경우, 측면을 드래그하여 창 너비가 변경 될 때 종횡비가 변경됩니다. 옵션 -vs "osxvideosink force-aspect-ratio=true"
옵션을 사용하여 창에 처음 열릴 때 올바른 종횡비를 갖도록 할 수 있습니다.
Windows v3.0 용 Bonjour SDK를 다운로드하여 설치하십시오. SoftPedia.com에 등록하지 않고 SDK를 다운로드하거나 공식 Apple 사이트 https://developer.apple.com/download에서 얻을 수 있습니다 (Apple은 개발자로 등록하여 해당 사이트에서 액세스 할 수 있습니다). Bonjour SDK를 C:Program FilesBonjour SDK
로 설치해야합니다.
(이것은 64 비트 창을위한 것입니다. 32 비트 창을위한 빌드는 가능하지만 테스트되지는 않습니다.) UNIX와 같은 MSYS2 빌드 환경이 사용됩니다 : 공식 사이트에서 MSYS2를 다운로드하여 설치합니다. https : // www .msys2.org/. 기본 설치 위치 C:mysys64
수락하십시오.
MSYS2 패키지는 Arch Linux에서 사용하는 "Pacman"패키지 관리자의 변형으로 설치됩니다. Windows 시작 메뉴의 MSYS2 탭에서 "MSYS2 MINGW64"터미널을 열고 "Pacman -Syu"로 새로운 MSYS2 설치를 업데이트하십시오. 그런 다음 Mingw-64 컴파일러 및 Cmake를 설치하십시오
pacman -S mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc
모든 필요한 종속성이있는 컴파일러는 기본 경로 C:/msys64/mingw64
와 함께 MSYS64 디렉토리에 설치됩니다. 여기서 우리는 단순히 MSYS2 환경의 명령 줄에서 uxplay를 구축 할 것입니다 (이는 빌드 시스템을 위해 " make
"대신 " ninja
"를 사용합니다).
GitHub에서 최신 UXPlay를 다운로드하고 ( git
사용하려면 pacman -S git
으로 설치 한 다음 " git clone https://github.com/FDH2/UxPlay
")를 설치 한 다음 UXPlay 종속성을 설치하십시오 (OpenSSL은 이미 MSYS2로 설치되었습니다).
pacman -S mingw-w64-x86_64-libplist mingw-w64-x86_64-gstreamer mingw-w64-x86_64-gst-plugins-base
다른 Windows 빌드 시스템을 시도하는 경우 Windows 용 GSTREAMER의 MSVC 버전은 공식 GSTREAMER 사이트에서 사용할 수 있지만 MSYS2의 MINGW 64 비트 빌드 만 테스트되었습니다.
Uxplay 소스 디렉토리의 CD, " mkdir build
"및 " cd build
". 빌드 프로세스는 Bonjour SDK C:Program FilesBonjour SDK
에 설치되어 있다고 가정합니다. 다른 곳이라면 Enviroment 변수 Bonjour_sdk_home을 설정하여 해당 위치를 가리 키십시오. 그런 다음 Uxplay를 구축하십시오
cmake ..
ninja
이 중 하나에 오류가 없다고 가정하면 현재 ( "빌드") 디렉토리에 uxplay 실행 가능 UXPlay.exe를 구축하게됩니다. "sudo make install"및 "sudo make un enclall"기능은 다른 빌드에서 제공되는 기능을 Windows에서 사용할 수 없습니다. 대신, MSYS2 환경에는 /mingw64/...
이용 가능하며 Uxplay.exe 실행 파일을 C:/msys64/mingw64/bin
( C:/msys64/mingw64/share/...
) 와 함께
cmake --install . --prefix /mingw64
맨 페이지를 볼 수 있으려면 " pacman -S man
"을 사용하여 Manpage Viewer를 설치해야합니다.
uxplay.exe를
하려면 pacman -S mingw-w64-x86_64-gst-
과 함께 GSTREAMER 플러그인 패키지를 설치해야합니다.
사용할 다른 MSYS2 GSTREAMER 플러그인 패키지는 MSYS2 패키지에 나열되어 있습니다.
또한 Windows 방화벽을 통해 데이터에 액세스하려면 UXPlay 실행 가능 UXPlay.exe에 권한을 부여해야합니다. UXPlay를 처음 실행할 때이를 수행 할 수있는 선택이 자동으로 제공 될 수 있거나 Windows 설정-> 업데이트 및 보안-> Windows 보안-> 방화벽 및 네트워크 보호를 사용하여 수행해야 할 수도 있습니다.> 방화벽을 통해 앱을 허용합니다 . 바이러스 보호가 uxplay.exe를 "의심스러운"(그러나 진정한 맬웨어 서명이 없으면)로 표시하는 경우 예외를 제시해야 할 수도 있습니다.
이제 " uxplay
"(MSYS2 터미널 창에서)를 실행하여 테스트하십시오. AudioSink를 지정 해야하는 경우 Windows에는 두 가지 주요 선택 사항이 있습니다. 이전 DirectSound 플러그인 " -as directsoundsink
"및보다 최신 Windows Audio Session API (WASAPI) 플러그인 " -as wasapisink
"가 있습니다.
uxplay -as 'wasapisink device=""'
여기서 gst-device-monitor-1.0 Audio
"를 사용하여 찾을 수있는 Guid에 의해 사용 가능한 오디오 장치를 지정합니다 {0.0.0.00000000}.{98e35b2b-8eba-412e-b840-fd2c2492cf44}
. " device
"가 지정되지 않은 경우 기본 오디오 장치가 사용됩니다.
-vs
옵션을 사용하여 비디오 싱크를 지정하려면
에 대한 일부 선택은 d3d11videosink
, d3dvideosink
, glimagesink
, gtksink
입니다.
-vs "d3d11videosink fullscreen-toggle-mode=property fullscreen=true"
사용하여 전체 화면 모드에있을 수 있습니다. 옵션 -vs "d3d11videosink fullscreen-toggle-mode=alt-enter"
. 편의를 위해,이 옵션은 전체 화면 옵션이 있거나없는 -vs d3d11videosink
만 사용하면 추가됩니다. "-fs"가 사용됩니다. (Windows 사용자는 Uxplay Startup 옵션 파일에 " vs d3d11videosink
"(초기 " -
")를 추가 할 수 있습니다. "man uxplay"또는 "uxplay -h"참조).) 실행 파일 C:msys64mingw64binuxplay
는 Wind
옵션:
$UXPLAYRC
, 또는 ~/.uxplayrc
또는 ~/.config/uxplayrc
)에서 초기 " -
"문자없이 라인 당 하나의 옵션)도 작성할 수 있습니다. " #
"로 시작하는 선은 의견으로 취급되어 무시됩니다. 명령 줄 옵션은 시작 파일에서 옵션을 대체합니다.-n server_name (기본값 : uxplay); server_name@ hostname은 iPad, iPhone 등에 AirPlay 서비스를 제공하는 이름으로 호스트 이름 이 UXplay를 실행하는 서버의 이름입니다. 이것은 이제 미러 디스플레이 (x11) 창 위에 표시된 이름입니다.
-NH AirPlay 서버 이름의 끝에서 "@ hostname "을 추가하지 마십시오.
-h265 화면 미러 모드에서 H264 비디오 (1080p) 외에 H265 (4K/HEVC) 비디오를 수락하기위한 "ScreenmulticOdec"지원 (AirPlay "기능)을 활성화합니다. 이 옵션이 사용되면 두 개의 "비디오 파이프 라인"(하나는 H264, 하나는 H265 용)이 작성됩니다. 파이프 라인의 Gstreamer 플러그인이 H264 또는 H265에 특정한 경우 각 파이프 라인에 올바른 버전이 사용됩니다. 유선 클라이언트 서버 이더넷 연결은 4K 비디오의 경우 WiFi보다 선호되며 클라이언트가 필요할 수 있습니다. 최근 Apple 장치 (M1/M2 Mac 또는 iPad 및 일부 iPhone) 만 H> 1080을 사용한 Resolut "-S WXH"가 요청되면 H265 비디오를 보낼 수 있습니다. "-h265"옵션은 기본 해상도 ( "-s"옵션)를 1920x1080에서 3840x2160으로 변경하고 기본 최대 프레임 속 ( "-fps"옵션)을 30fps로 남겨 둡니다.
-PIN [NNNN] : (v1.67 이후) 새 클라이언트가 처음 연결할 때 Apple 스타일 (일회성) "PIN"인증 사용 : 터미널에 4 자리 핀 코드가 표시되고 클라이언트에 표시됩니다. 화면은 로그인 프롬프트를 입력 할 프롬프트를 보여줍니다. "-pin"자체가 사용될 때, 각 인증에 대해 새로운 랜덤 핀 코드가 선택됩니다. "-pin nnnn"(예 : "-pin 3939")이 사용되면 변하지 않는 고정 코드가 설정됩니다. 인증은 서버를 클라이언트의 "신뢰할 수있는 서버"목록에 추가하며 클라이언트 및 서버 공개 키가 변경되지 않은 경우 클라이언트가 다시 인증 할 필요가 없습니다. (V1.68 이후 기본적으로 서버 공개 키는 MAC 주소에서 생성되며 -M 옵션으로 변경할 수 있으며 키 생성의 대체 메소드는 -key 옵션을 참조하십시오). UXPlay Server가 PIN 인증 프로토콜을 사용하려는 경우 UXPlay Startup 파일에 "PIN"을 추가하십시오).
-reg [ filename ] : (v1.68 이후). "-pin"을 사용하는 경우이 옵션은 $ home/.uxplay.register (또는 선택적으로 Filename )에 핀을 인증 된 "신뢰할 수있는 클라이언트"레지스터를 유지합니다. 이 옵션이 없으면 PIN 승인을 건너 뛰는 반환 클라이언트는 신뢰할 수 있으며 점검하지 않습니다. 이 옵션은 UXplay가보다 공개 환경에서 사용되어 클라이언트 세부 정보를 기록하는 경우 유용 할 수 있습니다. 레지스터는 클라이언트의 공개 키 (Base-64 형식), 장치 ID 및 장치 이름이있는 텍스트, 클라이언트 당 한 줄입니다. ( "#"와 함께) 또는 라인 데리저를 삭제하면 해당 클라이언트 (클라이언트 액세스를 제어 할 수있는 더 많은 방법을 위해 옵션 -재판매, -블록, -allow 참조). (이 기능을 사용하려면 시작 파일에 줄을 추가하십시오.)
-vsync [x] (미러 모드 :)이 옵션 ( 이제 기본값 )은 타임 스탬프를 사용하여 서버의 비디오와 오디오를 동기화하고 ( x = "20.5"는 0.0205 초 지연을 의미합니다. 1 초 미만의 양도 또는 음의 지연이 허용됩니다.) 하드웨어 비디오 디코딩이없는 Raspberry Pi와 같은 저전력 시스템에서는 필요합니다.
-Vsync No (미러 모드 :) 이것은 타임 스탬프 기반 오디오 비디오 동기화를 끄고 uxplay-1.64 이전의 기본 동작을 복원합니다. 표준 데스크톱 시스템은 타임 스탬프를 사용하지 않고 잘 작동하는 것 같습니다.이 모드는 MAC 컴퓨터의 두 번째 모니터로 UXPlay를 사용하거나 웹캠 모니터링과 같은 "라이브 스트리밍"에 적합합니다. 그것으로, 비디오 프레임은 삭제되지 않습니다.
-async [x] (ALAC (Audio-only) 모드 :)이 옵션은 타임 스탬프를 사용하여 클라이언트의 비디오와 함께 서버의 오디오를 동기화하고 ( x = "20.5"는 0.0205를 의미합니다. 초 지연 : 1 초 미만의 양 또는 음수 지연이 허용됩니다.) 클라이언트는 대기 시간을 설명하기 위해 비디오 지연을 추가하기 때문에 -async 모드의 서버는 동등한 오디오 지연을 추가하므로 오디오가 일시 정지 또는 A와 같은 오디오 변경을 의미합니다. 트랙 변경은 즉시 적용되지 않습니다. 이는 원칙적으로 -al
오디오 대기 시간 설정을 사용하여 서버가 클라이언트에게보고하는 대기 시간 (기본 0.25 초)을 변경하여 완화 될 수 있지만 현재 변경하는 데 영향을 미치지 않는 것 같습니다 .
-async no . 이것은 오디오 전용 모드의 기본 동작이지만이 옵션은 "uxplayrc"구성 파일에서 설정된 -async
옵션을 끄는 명령 줄 옵션으로 유용 할 수 있습니다.
-DB LOW [: High ] 항공기 볼륨 관리 감쇠 (게인)를 -30dB : 0db에서 낮음 : 0dB 또는 낮음 : 높음 . 하한 최저는 음수 여야합니다 (감쇠). 상한 높이는 하나의 부호 일 수 있습니다. (GSTREAMER는 +20dB를 초과 할 수 없도록 볼륨 방출을 높게 제한합니다). 저조는 "평평"이므로 -db -50 : 10의 경우 -7db에 의한 방송 감쇠의 변화가 -7 x (60/30) = -14dB 감쇠 및 최대 볼륨 (AirPlay 0db)으로 변환됩니다. 10dB 증강이며 AirPlay -30dB는 -50dB가됩니다. 최소 비행 값 (정확히 -30dB)은 "음소거"로 변환됩니다.
-Taper는 "테이퍼링 된"에어 플레이 볼륨 제어 프로파일 (Shairport-Sync에서 "DASL-TAPERING"이라고하는 것과 일치)을 제공합니다. 부피)는 50%감소하고, 인식 된 부피는 절반 (10dB 감쇠). (이것은 더 큰 경우 "표 페어"볼륨을 사용하기 위해 저 볼륨으로 수정됩니다.)
-S WXH EG -S 1920X1080 (= "1080p"), H264 비디오의 픽셀의 기본 너비 및 높이 해상도. (기본값은 -h265 옵션을 사용하는 경우 3840x2160 (= "4K")이됩니다.) 이것은 AirPlay 클라이언트에게 제기 된 요청 일 뿐이며 아마도 최종 해상도가 아닐 것입니다. w와 h는 4 자리 이하의 정수입니다. 높이 픽셀 크기는 스트리밍 형식을 결정하기 위해 클라이언트가 사용하는 제어입니다. 너비는 이미지의 모양으로 동적으로 조정됩니다 (예 : iPad의 유지 방법에 따라 세로 또는 조경 형식).
-S WXH@R 위와 같이 AirPlay 클라이언트에게 디스플레이의 화면 새로 고침 속도에 대해 알려줍니다. 기본값은 r = 60 (60Hz)입니다. R은 256보다 작은 정수 여야합니다.
-o는 디스플레이 창의 "과도한"옵션을 켭니다. 이렇게하면 옵션 -S WXH (또는 기본값 1920x1080)가 요청한 일부 픽셀을 사용하여 이미지 해상도가 줄어 듭니다. GSTREAMER에 의해 표시). 권장 사항 :이 옵션을 사용해야 할 특별한 이유가 없으면 이 옵션을 사용하지 마십시오 .
-fs는 전체 화면 모드를 사용하지만 X11, Wayland, Vaapi 및 D3d11 (Windows)에서만 작동합니다.
-P를 사용하면 UXPlay에서 사용하는 네트워크 포트를 선택할 수 있습니다 (서버가 방화벽 뒤에있는 경우 열어야합니다). -p는 "레거시"포트 TCP 7100, 7000, 7001, UDP 6000, 6001, 7011. -pn (예 : -P 35000)을 설정합니다. -p n1, n2, n3 (쉼표로 구분 된 값) 각 포트를 별도로 설정합니다. -P N1, N2는 포트 N1, N2, N2+1을 설정합니다. -P TCP N 또는 -P UDP N은 TCP 또는 UDP 포트 만 설정합니다. 포트는 범위 [1024-65535]에 있어야합니다.
-P 옵션을 사용하지 않으면 포트는 동적으로 (무작위로) 선택되며 방화벽이 작동하는 경우 작동하지 않습니다.
-AVDEC 힘 GSTREAMER 요소 AVDEC_H264 (LIBAV H264 디코더)를 사용하여 소프트웨어 H264 디코딩 사용. 이 옵션은 autovideoSink가 vaapisink와 같은 하드웨어에 따른 Videosink 플러그인을 선택하지 않아야합니다.
-VP Parser는 GStreamer 파이프 라인의 H264 Parser 요소를 선택하고 기본값은 H264Parse입니다. 인용문 "..."를 사용하면 옵션을 추가 할 수 있습니다.
-VD 디코더는 기본값 "DecodeBin"대신 GStreamer 파이프 라인의 H264 디코더 요소를 선택하여 선택합니다. 소프트웨어 디코딩은 AVDEC_H264에 의해 수행됩니다. 다양한 하드웨어 디코더에는 VAAPIH264DEC, NVDEC, NVH264DEC, V4L2H264DEC가 포함됩니다 (적절한 하드웨어를 사용할 수 있어야 함). 따옴표 "..."를 사용하면 일부 매개 변수가 디코더 이름에 포함될 수 있습니다.
-VC Converter는 기본값 "Videoconvert"대신 Gstreamer Pipeline의 Videoconverter 요소를 선택합니다. GPU에서 Video4Linux2 하드웨어 디코딩을 사용하는 경우 -vc v4l2convert
도 비디오 변환을 위해 GPU를 사용합니다. 인용문 "..."를 사용하면 일부 매개 변수가 변환기 이름에 포함될 수 있습니다.
-vs videosink는 기본값 "autovideosink"대신 GStreamer VideoSink를 선택하여 선택합니다. 일부 VideoSink 선택은 XimageInk, XvimagesInk, vaapisink (Intel Graphics), gtkesink, glimagesink, waylandsink, osxvideosink (macoS), kmssink (raspberry pi os lite와 같은 x11이없는 시스템의 경우) 또는 fpsdisplaysink입니다. FPS). 인용문 "..."를 사용하면 일부 매개 변수가 VideoSink 이름에 포함될 수 있습니다. 예를 들어, 전체 화면 모드는 vaapisink 플러그인에서 지원되며 -vs "vaapisink fullscreen=true"
사용하여 얻습니다. 이것은 또한 waylandsink
와도 작동합니다. 이러한 옵션의 구문은 주어진 플러그인 (GSTREAMER 문서 참조)에만 해당되며 일부 VideoSink의 선택은 시스템에서 작동하지 않을 수 있습니다.
-vs 0 스트리밍 된 비디오의 표시를 억제합니다. 미러 모드에서 클라이언트의 화면은 여전히 초당 1 프레임의 감소 속도로 미러링되지만 렌더링하거나 표시되지 않습니다. 이 옵션은 서버가 "헤드리스"(비디오 표시를 위해 첨부 된 화면이 없음) 인 경우 항상 사용해야하며, 오디오 렌더링에만 사용되며, 이는 AAC가없는 비디오와 우수한 품질의 ALAC에서 AAC 손실 제작 오디오가 될 것입니다. AirPlay 오디오 전용 모드의 Apple Lessless Audio.
video4linux2에 의한 GPU에서 하드웨어 H264 비디오 디코딩의 비디오 설정 -V4L2 비디오 설정. -vd v4l2h264dec -vc v4l2convert
에 해당합니다.
-BT709 디지털 TV의 BT709 색상 표준의 드문 (그러나 허용 된) "전체 범위 색상"변형을 Apple의 사용을 인식하기위한 이전 Video4Linux2 플러그인의 실패에 대한 해결 방법. 이는 더 이상 GSTREAMER-1.20.4와 백 포트에서 필요하지 않습니다.
-v4l2 "에 해당하는 RPI (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 이후 제거)
-Audiosink는 autoaudiosink가 당신을 위해 그것을 선택하게하는 대신 gstreamer audiosink를 선택합니다. Pulsesink, Alsasink, Pipewiresink, Osssink, Oss4Sink, Jackaudiosink, Osxaudiosink (MacOS), Wasapisink, DirectSoundSink (Windows 용)의 일부 오디오 싱크 선택 사항입니다. 인용문 "..."를 사용하면 일부 선택적 매개 변수 (예 -as "alsasink device=..."
가 허용되지 않을 수 있습니다. 이러한 옵션의 구문은 주어진 플러그인 (GSTREAMER 문서 참조)에만 해당되며 Audiosink의 일부 선택은 시스템에서 작동하지 않을 수 있습니다.
-AS 0 (또는 단지 -a )은 스트리밍 된 오디오의 재생을 억제하지만 스트리밍 된 비디오를 표시합니다.
-Al x는 클라이언트에보고 된 오디오 전용 (ALAC)에서 오디오 대기 시간 X를 (10 진) 초로 지정합니다. 범위 [0.0, 10.0] 초의 값은 허용되며, 전체 수의 마이크로 초로 변환됩니다. 기본값은 0.25 초 (250000 USEC)입니다. (그러나 클라이언트는이보고 된 대기 시간을 무시하는 것으로 보이 므로이 옵션은 기능이없는 것 같습니다.)
-CA Filename은 오디오 전용 ALAC 모드에서 "Cover Art"(Apple Music 등 )의 출력에 사용되는 파일 ( 파일 이름이 전체 경로를 포함 할 수있는 파일)을 제공합니다. 이 파일은 최신 커버 아트가 도착하면서 덮어 씁니다. 이 옵션이 사용되지 않으면 커버 아트 (JPEG 형식)가 폐기됩니다. 이미지가 변경되거나 정기적으로 다시로드되는 이미지 뷰어와 함께 사용하십시오 ( 예 : 초당 한 번). 이를 달성하려면 " uxplay -ca [path/to/]filename &
"를 백그라운드에서 실행 한 다음 전경에서 이미지 뷰어를 실행하십시오. 예를 들어, feh
뷰어로 사용하십시오 : " feh -R 1 [path/to/]filename
"(UXPlay가 배경에 넣은 동일한 터미널 창에서). 종료하려면 ctrl-C fg ctrl-C
사용하여 이미지 뷰어를 종료하고 uxplay
전경으로 가져오고 종료하십시오.
-Reset N은 클라이언트의 연속 시간 초과 실패 제한을 설정하여 서버에서 NTP 요청에 응답 할 수 있습니다 (클라이언트가 아직 존재하는지 확인하고 동기화하기 위해 3 초마다 전송됩니다). N 실패 후 클라이언트는 오프라인으로 추정되며 새로운 연결을 허용하기 위해 연결이 재설정됩니다. n 의 기본값은 5입니다. 값 n = 0은 타임 아웃에서 "제한 없음"을 의미합니다.
-NTP 타임 아웃으로 인해 재설정 후 비디오 창이 닫습니다 (기본값은 동일한 클라이언트에 더 부드러운 재구성을 허용하기 위해 창을 열어 두는 것입니다). 이 옵션은 전체 화면 모드에서 유용 할 수 있습니다.
-NC는 클라이언트가 "중지 미러링"신호를 보낼 때 비디오 창을 닫지 않는 이전의 uxplay <1.45 동작을 유지합니다. 이 옵션은 GSTREAMER가 GSTREAMER에 의해 MACOS에서 작성한 창이 GSTREAMER 파이프 라인이 닫히면 여전히 열려있는 경우에 올바르게 종료되지 않기 때문에 현재 MACOS에서 기본적으로 사용됩니다.
-새로운 클라이언트가 연결을 시도 할 때 Nohold는 현재 연결을 삭제합니다. 이 옵션이 없으면 현재 클라이언트는 Uxplay가 분리 될 때까지 독점적 인 소유권을 유지합니다.
-Restrict 제한 클라이언트는 -allow
에 지정된 클라이언트에 연결할 수 있습니다. DeviceID는 클라이언트가 연결을 시도 할 때 UXPlay에 의해 표시되는 MAC 주소의 형태를 가지고 있으며 불변으로 보입니다. 형식은 XX:XX:XX:XX:XX:XX
, x = 0-9, af를 가지고 있으며 아마도 장치의 "진정한"하드웨어 Mac 주소 일 것입니다. iOS 클라이언트는 일반적으로 다른 임의의 "개인 WI_FI 주소"( "가짜"MAC 주소)를 다른 네트워크 (개인 정보 보호 이유, 추적을 방지하기 위해)에 노출 시켜서 변경 될 수 있으며 DeviceID로 연결되지 않습니다.
-제한 제거 제한 제거 (기본값). 이는 시작 파일에 설정된 Overide 제한에 대한 명령 줄 인수로 유용합니다.
-ALKAR ID는 클라이언트 제한이 시행 될 때 DeviceID = ID를 허용 클라이언트 목록에 추가합니다. 일반적으로 이것은 uxplayrc 시작 파일의 항목입니다.
-Block ID는 클라이언트 제한이 일반적으로 시행되지 않더라도 항상 DeviceID = ID 로 클라이언트를 차단합니다. 일반적으로 이것은 uxplayrc 시작 파일의 항목입니다.
-fpsdata는 클라이언트가 전송하는 비디오 스트리밍 성능에 대한 일반 보고서 모니터링을 켭니다. 이 옵션이 사용되면 터미널 창에 표시됩니다. 데이터는 클라이언트가 1 초 간격으로 업데이트됩니다.
-fps n은 AirPlay 클라이언트가 비디오를 스트리밍하기 위해 최대 프레임 속도 (초당 프레임)를 설정합니다. n은 256보다 작은 정수 여야합니다. (클라이언트는 이보다 낮은 프레임 속도로 비디오를 제공하도록 선택할 수 있습니다. 기본값은 30fps입니다.) 60fps의 설정은 개선 된 비디오를 제공 할 수 있지만 Raspberry Pi에서는 권장되지 않습니다. 30fps 미만의 설정은 동시에 UXPlay를 둘 이상 실행하는 경우 대기 시간을 줄이는 데 유용 할 수 있습니다. 이 설정은 클라이언트 장치에 대한 권고 일 뿐이므로 높은 값을 설정해도 높은 프레임 속도를 강요하지 않습니다. ( "-vs fpsdisplaysink"를 사용하여 테스트하여 프레임 속도가 수신되는 내용을 확인하거나 비디오 스트리밍 중에 클라이언트가 지속적으로 보낸 비디오 스트림 성능 데이터를 표시하는 옵션 -fpsdata를 사용 할 수 있습니다.)
-f {h | v | i} "videoflip"이미지 변환을 구현합니다. h = 수평 플립 (오른쪽 왼쪽 플립 또는 미러 이미지); v = 수직 플립; I = 180도 회전 또는 반전 (H와의 조합).
-r {r | l} 90도 오른쪽 (시계 방향) 또는 왼쪽 (시계 반대 방향) 회전; 이러한 이미지 변환은 -F 변환 후에 수행됩니다.
-m [Mac] UXPlay에서 사용하는 MAC 주소 (장치 ID)를 변경합니다 (기본값은 호스트 컴퓨터의 네트워크 카드에서보고 한 실제 하드웨어 MAC 주소를 사용하는 것입니다). 동일한 컴퓨터에서 UXPlay의 두 인스턴스 이상을 실행하려는 경우 각 UXPLAY에 대해 다른 Server_Name, MAC 주소 및 네트워크 포트가 필요합니다.) [MAC] (양식 XX : XX : XX : XX : XX : XX : XX, 6 Hex Octets)는 제공되지 않으며 임의의 MAC 주소가 생성됩니다. UXPlay가 네트워크 카드의 실제 MAC 주소를 찾지 못하면 (특히, 첫 번째 활성 네트워크 인터페이스에서 사용하는 MAC 주소) 옵션 -M이 지정되지 않은 경우에도 임의의 MAC 주소가 사용됩니다. (uxplay가 시작될 때마다 임의의 MAC 주소가 다릅니다).
-Key [ filename ] : 지속적인 공개 키 (-pin 옵션에 필요한)를 생성하고 저장하기위한이 (보다 안전한) 옵션은 기본적으로 기본적으로 서버의 "장치 ID에서 키를 생성하는 (덜 안전한) 메소드로 대체되었습니다. "(MAC 주소, -M 옵션으로 변경할 수 있으며 시작 파일 옵션으로 편리하게 변경할 수 있습니다) -key 옵션이 사용되면, 해당 파일이 존재하지 않는 경우 $HOME/.uxplay.pem
에 단단히 생성 된 KeyPair가 생성되어 저장됩니다. (선택적으로, 키는 파일 이름 에 저장 될 수 있습니다.)이 방법은 새로운 기본 메소드보다 안전합니다 (장치 ID가 DNS_SD 공지에서 방송되기 때문에) 그러나 여전히 개인 키를 PEM 파일에 액세스 할 수있는 사람에게 노출됩니다. . 이 옵션은 Uxplay startup 파일에서 "Key"또는 "Key Filename "(초기 "-"없음)으로 설정해야합니다. 여기서 Filename 은 인용문 ( "...."
)으로 둘러싸여야하는 전체 경로입니다. 빈 공간이 포함되어 있습니다. 기본 메소드가 더 간단하고 클라이언트 액세스에 대한 보안이 중요한 문제가 될 가능성이 높기 때문에 -Key 옵션은 더 이상 권장되지 않습니다 .
-dacp [ filename ] : 현재 클라이언트를 내보내고 파일에 대한 클라이언트 및 Active-Remote 키 : 기본값은 $ home/.uxplay.dacp입니다. (선택적으로 파일 이름 으로 변경할 수 있습니다). 원격 제어 응용 프로그램에서 사용할 수 있습니다. 파일은 일시적입니다. 클라이언트가 연결된 상태에서만 존재합니다.
-VDMP는 H264 비디오를 덤프하여 videodump.h264를 파일로 파일을 덤프합니다. -vdmp n videodump.x.h264로 nal 단위를 넘지 않는 덤프; x = 1,2, ... SPS/PPS NAL 장치가 도착할 때마다 증가합니다. 이름 VideoDump를 변경하려면 -vdmp [n] filename을 사용하십시오.
-Admp는 AudioDump.x.aac (AAC-ELD Format Audio), AudioDump.x.Alac (Alac Format Audio) 또는 AudioDump.x.aud (기타 형식 오디오), 여기서 x = 1,2,3를 파일로 파일로 덤프합니다. ... 오디오 형식이 변경 될 때마다 증가합니다. -Admp n은 파일에 덤프 된 패킷 수를 n 이하로 제한합니다. AudioDump 라는 이름을 변경하려면 -admp [n] filename을 사용하십시오. (덤핑 된 비디오와 달리) 덤프 오디오는 현재 표준 오디오 플레이어와 함께 재생할 수 있도록 컨테이너화되지 않기 때문에 디버깅에만 유용합니다.
-D 디버그 출력 활성화. 참고 : 여기에는 GSTREAMER 오류 또는 디버그 메시지가 표시되지 않습니다. GSTREAMER 오류 및 경고 메시지를 보려면 UXPlay를 실행하기 전에 "Export GST_DEBUG = 2"로 환경 변수 GST_DEBUG를 설정하십시오. GSTREAMER 정보 메시지를 보려면 GST_DEBUG = 4를 설정하십시오. 디버그 메시지의 경우 gst_debug = 5; 더 많은 gstreamer 내부 작업을 볼 수 있도록 이것을 증가시킵니다.
참고 : uxplay
터미널 명령 줄에서 실행되며 정보 메시지는 터미널에 기록됩니다.
Ubuntu의 한 사용자 (Ubuntu)는 "USR/local/lib/libcrypto.a"및 "zlib"에 링크하는 메시지와 함께 컴파일이 실패했습니다. 이는 (LIBSSL-DEV의 표준 우분투 설치 외에도) /usr /local에서 libcrypto를 사용한 두 번째 설치가 존재한다는 것을 알지 못했기 때문입니다. 솔루션 : OpenSSL을 둘 이상 설치하면 환경 변수 Open_SSL_ROOT_DIR을 올바른 것을 가리 키도록 설정하십시오. 64 비트 우분투에서 CMAKE를 실행하기 전에 export OPENSSL_ROOT_DIR=/usr/lib/X86_64-linux-gnu/
실행하여 수행됩니다.
uxplay가 작동하려면 DNS_SD 서비스 중단 ( "Bonjour"또는 "Zeroconf") 서비스가 필요합니다. Linux에서는 일반적으로 Avahi가 제공하고 문제를 해결하려면 avahi-browse
도구를 사용해야합니다. (이것을 얻으려면 avahi-utils
와 같은 이름의 별도 패키지를 설치해야 할 수도 있습니다.)
Linux에서는 avahi가 설치되어 있는지 확인하고 Uxplay sudo service avahi-daemon
실행하는 시스템에서 Avahi sudo systemctl
Daemon 서비스를 시작하십시오 (배포하는 방법은 다음과 같은 방법을 문서화합니다. sudo service avahi-daemon
,
가 활성화, 비활성화, 시작, 중지, 상태 중 하나를 사용하면 Avahi -Daemon.conf 파일을 편집해야합니다 (일반적으로 /etc / sudo find /etc -name avahi-daemon.conf
에 있습니다. sudo find /etc -name avahi-daemon.conf
") :"비활성화 출판 "이 선택된 옵션이 아닌지 확인하십시오). 일부 시스템은 대신 DNS-SD 서비스를 제공하기위한 대안으로 MDNSD 데몬을 사용할 수 있습니다. (FreeBSD offers both alternatives, but only Avahi was tested; see here.)
If UxPlay stops with the "No DNS-SD Server found" message, this means that your network does not have a running Bonjour/zeroconf DNS-SD server. Before v1.60, UxPlay used to stall silently if DNS-SD service registration failed, but now stops with an error message returned by the DNSServiceRegister function: kDNSServiceErr_Unknown if no DNS-SD server was found: (A NixOS user found that in NixOS, this error can also occur if avahi-daemon service IS running with publishing enabled, but reports "the error disappeared on NixOS by setting services.avahi.openFirewall to true".) Other mDNS error codes are in the range FFFE FF00 (-65792) to FFFE FFFF (-65537), and are listed in the dnssd.h file. An older version of this (the one used by avahi) is found here. A few additional error codes are defined in a later version from Apple.
If UxPlay stalls without an error message and without the server name showing on the client , this is a network problem (if your UxPlay version is older than 1.60, it is also the behavior when no DNS-SD server is found.)
A useful tool for examining such network problems from the client end is the (free) Discovery DNS-SD browser available in the Apple App Store for both iOS (works on iPadOS too) and macOS.
If your router has this problem, a reported "fix" is to (at least on 5GHz) use fixed channel and/or fixed (not dynamic) channel width.
This is usually because Avahi is only using the "loopback" network interface, and is not receiving mDNS queries from new clients that were not listening when UxPlay started.
To check this, after starting uxplay, use the utility avahi-browse -a -t
in a different terminal window on the server to verify that the UxPlay AirTunes and AirPlay services are correctly registered (only the AirTunes service is used in the "Legacy" AirPlay Mirror mode used by UxPlay, but the AirPlay service is used for the initial contact).
The results returned by avahi-browse should show entries for uxplay like
+ eno1 IPv6 UxPlay AirPlay Remote Video local
+ eno1 IPv4 UxPlay AirPlay Remote Video local
+ lo IPv4 UxPlay AirPlay Remote Video local
+ eno1 IPv6 863EA27598FE@UxPlay AirTunes Remote Audio local
+ eno1 IPv4 863EA27598FE@UxPlay AirTunes Remote Audio local
+ lo IPv4 863EA27598FE@UxPlay AirTunes Remote Audio local
If only the loopback ("lo") entries are shown, a firewall on the UxPlay host is probably blocking full DNS-SD service, and you need to open the default UDP port 5353 for mDNS requests, as loopback-based DNS-SD service is unreliable.
If the UxPlay services are listed by avahi-browse as above, but are not seen by the client, the problem is likely to be a problem with the local network.
This shows that a DNS-SD service is working, clients hear UxPlay is available, but the UxPlay server is not receiving the response from the client. This is usually because a firewall on the server is blocking the connection request from the client. (One user who insisted that the firewall had been turned off turned out to have had two active firewalls ( firewalld and ufw ) both running on the server!) If possible, either turn off the firewall to see if that is the problem, or get three consecutive network ports, starting at port n, all three in the range 1024-65535, opened for both tcp and udp, and use "uxplay -pn" (or open UDP 7011,6001,6000 TCP 7100,7000,7001 and use "uxplay -p").
If you are really sure there is no firewall, you may need to investigate your network transmissions with a tool like netstat, but almost always this is a firewall issue.
If you do not see the message raop_rtp_mirror starting mirroring
, something went wrong before the client-server negotiations were finished. For such problems, use "uxplay -d " (debug log option) to see what is happening: it will show how far the connection process gets before the failure occurs. You can compare your debug output to that from a successful start of UxPlay in the UxPlay Wiki.
If UxPlay reports that mirroring started, but you get no video or audio, the problem is probably from a GStreamer plugin that doesn't work on your system (by default, GStreamer uses the "autovideosink" and "autoaudiosink" algorithms to guess what are the "best" plugins to use on your system). A different reason for no audio occurred when a user with a firewall only opened two udp network ports: three are required (the third one receives the audio data).
Raspberry Pi devices ( Pi 4B+ and earlier: this does not apply to the Pi 5, which does not provide hardware h264 decoding, and does not need it ) work best with hardware GPU h264 video decoding if the Video4Linux2 plugin in GStreamer v1.20.x or earlier has been patched (see the UxPlay Wiki for patches). This is fixed in GStreamer-1.22, and by backport patches from this in distributions such as Raspberry Pi OS (Bullseye): use option -bt709
with the GStreamer-1.18.4 from Raspberry Pi OS . This also needs the bcm2835-codec kernel module that is not in the standard Linux kernel (it is available in Raspberry Pi OS, Ubuntu and Manjaro).
-avdec
for software h264-decoding.Sometimes "autovideosink" may select the OpenGL renderer "glimagesink" which may not work correctly on your system. Try the options "-vs ximagesink" or "-vs xvimagesink" to see if using one of these fixes the problem.
Other reported problems are connected to the GStreamer VAAPI plugin (for hardware-accelerated Intel graphics, but not NVIDIA graphics). Use the option "-avdec" to force software h264 video decoding: this should prevent autovideosink from selecting the vaapisink videosink. Alternatively, find out if the gstreamer1.0-vaapi plugin is installed, and if so, uninstall it. (If this does not fix the problem, you can reinstall it.)
There are some reports of other GStreamer problems with hardware-accelerated Intel HD graphics. One user (on Debian) solved this with "sudo apt install intel-media-va-driver-non-free". This is a driver for 8'th (or later) generation "*-lake" Intel chips, that seems to be related to VAAPI accelerated graphics.
If you do have Intel HD graphics, and have installed the vaapi plugin, but -vs vaapisink
does not work, check that vaapi is not "blacklisted" in your GStreamer installation: run gst-inspect-1.0 vaapi
, if this reports 0 features
, you need to export GST_VAAPI_ALL_DRIVERS=1
before running uxplay, or set this in the default environment.
You can try to fix audio or video problems by using the " -as
" or " -vs
" options to choose the GStreamer audiosink or videosink , rather than letting GStreamer choose one for you. (See above, in Starting and running UxPlay for choices of
or
.)
The "OpenGL renderer" window created on Linux by "-vs glimagesink" sometimes does not close properly when its "close" button is clicked. (this is a GStreamer issue). You may need to terminate uxplay with Ctrl-C to close a "zombie" OpenGl window. If similar problems happen when the client sends the "Stop Mirroring" signal, try the no-close option "-nc" that leaves the video window open.
rm -rf ~/.cache/gstreamer-1.0/*
may be the solution to problems where gst-inspect-1.0 does not show a plugin that you believe is installed. The cache will be regenerated next time GStreamer is started. This is the solution to puzzling problems that turn out to come from corruption of the cache, and should be tried first. If UxPlay fails to start, with a message that a required GStreamer plugin (such as "libav") was not found, first check with the GStreamer tool gst-inspect-1.0 to see what GStreamer knows is available. (You may need to install some additional GStreamer "tools" package to get gst-inspect-1.0). For, eg a libav problem, check with " gst-inspect-1.0 libav
". If it is not shown as available to GStreamer, but your package manager shows the relevant package as installed (as one user found), try entirely removing and reinstalling the package. That user found that a solution to a " Required gstreamer plugin 'libav' not found " message that kept recurring was to clear the user's gstreamer cache.
If it fails to start with an error like ' no element "avdec_aac"
' this is because even though gstreamer-libav is installed. it is incomplete because some plugin features are missing: " gst-inspect-1.0 | grep avdec_aac
" will show if avdec_aac is available. Unlike other GStreamer plugins, the libav plugin is a front end to FFmpeg codecs which provide avdec_*.
Some distributions (RedHat, SUSE, etc) provide incomplete versions of FFmpeg because of patent issues with codecs used by certain plugins. In those cases there will be some "extra package" provider like RPM fusion (RedHat), packman (SUSE) where you can get complete packages (your distribution will usually provide instructions for this, Mageia puts them in an optional "tainted" repo) . The packages needed may be "ffmpeg*" or "libav*" packages: the GStreamer libav plugin package does not contain any codecs itself, it just provides a way for GStreamer to use ffmpeg/libav codec libraries which must be installed separately. For similar reasons, distributions may ship incomplete packages of GStreamer "plugins-bad". Use user on Fedora thought they had installed from rpmfusion, but the system had not obeyed: "Adding --allowerasing to the dnf command fixed it after a restart" .
starting with release UxPlay-1.65.3, UxPlay will continue to function, but without audio in mirror mode, if avdec_aac is missing.
To troubleshoot GStreamer execute "export GST_DEBUG=2" to set the GStreamer debug-level environment-variable in the terminal where you will run uxplay, so that you see warning and error messages; see GStreamer debugging tools for how to see much more of what is happening inside GStreamer. Run "gst-inspect-1.0" to see which GStreamer plugins are installed on your system.
Some extra GStreamer packages for special plugins may need to be installed (or reinstalled: a user using a Wayland display system as an alternative to X11 reported that after reinstalling Lubuntu 18.4, UxPlay would not work until gstreamer1.0-x was installed, presumably for Wayland's X11-compatibility mode). Different distributions may break up GStreamer 1.x into packages in different ways; the packages listed above in the build instructions should bring in other required GStreamer packages as dependencies, but will not install all possible plugins.
The GStreamer video pipeline, which is shown in the initial output from uxplay -d
, has the default form
appsrc name=video_source ! queue ! h264parse ! decodebin ! videoconvert ! autovideosink name=video_sink sync=false
The pipeline is fully configurable: default elements "h264parse", "decodebin", "videoconvert", and "autovideosink" can respectively be replaced by using uxplay options -vp
, -vd
, -vc
, and -vs
, if there is any need to modify it (entries can be given in quotes "..." to include options).
This can happen if the TCP video stream from the client stops arriving at the server, probably because of network problems (the UDP audio stream may continue to arrive). At 3-second intervals, UxPlay checks that the client is still connected by sending it a request for a NTP time signal. If a reply is not received from the client within a 0.3 sec time-window, an "ntp timeout" is registered. If a certain number (currently 5) of consecutive ntp timeouts occur, UxPlay assumes that the client is "dead", and resets the connection, becoming available for connection to a new client, or reconnection to the previous one. Sometimes the connection may recover before the timeout limit is reached, and if the default limit is not right for your network, it can be modified using the option "-reset n ", where n is the desired timeout-limit value ( n = 0 means "no limit"). If the connection starts to recover after ntp timeouts, a corrupt video packet from before the timeout may trigger a "connection reset by peer" error, which also causes UxPlay to reset the connection.
A protocol failure may trigger an unending stream of error messages, and means that the audio decryption key (also used in video decryption) was not correctly extracted from data sent by the client.
The protocol was modifed in UxPlay-1.65 after it was discovered that the client-server "pairing" step could be avoided (leading to a much quicker connection setup, without a 5 second delay) by disabling "Supports Legacy Pairing" (bit 27) in the "features" code UxPlay advertises on DNS-SD Service Discovery. Most clients will then not attempt the setup of a "shared secret key" when pairing, which is used by AppleTV for simultaneous handling of multiple clients (UxPlay only supports one client at a time). This change is now well-tested, but in case it causes any protocol failures, UxPlay can be reverted to the previous behavior by uncommenting the previous "FEATURES_1" setting (and commenting out the new one) in lib/dnssdint.h, and then rebuilding UxPlay. ("Pairing" is re-enabled when the new Apple-style one-time "pin" authentication is activated by running UxPlay with the "-pin" option introduced in UxPlay 1.67.)
Protocol failure should not happen for iOS 9.3 or later clients. However, if a client uses the same older version of the protocol that is used by the Windows-based AirPlay client emulator AirMyPC , the protocol can be switched to the older version by the setting OLD_PROTOCOL_CLIENT_USER_AGENT_LIST
in UxPlay/lib/global.h
. UxPlay reports the client's "User Agent" string when it connects. If some other client also fails to decrypt all audio and video, try adding its "User Agent" string in place of "xxx" in the entry "AirMyPC/2.0;xxx" in global.h and rebuild uxplay.
Note that for DNS-SD Service Discovery, Uxplay declares itself to be an AppleTV3,2 (a 32 bit device) with a sourceVersion 220.68; this can also be changed in global.h. UxPlay also works if it declares itself as an AppleTV6,2 with sourceVersion 380.20.1 (an AppleTV 4K 1st gen, introduced 2017, running tvOS 12.2.1), so it does not seem to matter what version UxPlay claims to be.
1.70 2024-10-04 Add support for 4K (h265) video (resolution 3840 x 2160). Fix issue with GStreamer >= 1.24 when client sleeps, then wakes.
1.69 2024-08-09 Internal improvements (eg in -nohold option, identifying GStreamer videosink selected by autovideosink, finding X11 display) in anticipation of future HLS video support. New -nofreeze option to not leave frozen video in place when a network connection is reset. Fixes for GStreamer-1.24.x changes.
1.68 2023-12-31 New simpler (default) method for generating a persistent public key from the server MAC address (which can now be set with the -m option). (The previous method is still available with -key option). New option -reg to maintain a register of pin-authenticated clients. Corrected volume-control: now interprets AirPlay volume range -30dB:0dB as decibel gain attenuation, with new option -db low[:high] for "flat" rescaling of the dB range. Add -taper option for a "tapered" AirPlay volume-control profile.
1.67 2023-11-30 Add support for Apple-style one-time pin authentication of clients with option "-pin": (uses SRP6a authentication protocol and public key persistence). Detection with error message of (currently) unsupported H265 video when requesting high resolution over wired ethernet. Removed rpi* options (which are not valid with new Raspberry Pi model 5, and can be replaced by combinations of other options). Added optional argument "mac" to "-m" option, to specify a replacement MAC address/Device ID. Update llhttp to v. 9.1.3. Add -dacp option for exporting current client DACP info (for remotes).
1.66 2023-09-05 Fix IPV6 support. Add option to restrict clients to those on a list of allowed deviceIDs, or to block connections from clients on a list of blocked deviceIDs. Fix for #207 from @thiccaxe (screen lag in vsync mode after client wakes from sleep).
1.65.3 2023-07-23 Add RPM spec file; add warning if required gstreamer libav feature "avdec_aac" is missing: (this occurs in RPM-based distributions that ship an incomplete FFmpeg for Patent or License reasons, and rely on users installing an externally-supplied complete FFmpeg). Mirror-mode airplay will now work without audio if avdec_aac is missing.
1.65 2023-06-03 Eliminate pair_setup part of connection protocol to allow faster connections with clients (thanks to @shuax #176 for this discovery); to revert, uncomment a line in lib/dnssdint.h. Disconnect from audio device when connection closes, to not block its use by other apps if uxplay is running but not connected. Fix for AirMyPC client (broken since 1.60), so its older non-NTP timestamp protocol works with -vsync. Corrected parsing of configuration file entries that were in quotes.
1.64 2023-04-23 Timestamp-based synchronization of audio and video is now the default in Mirror mode. (Use "-vsync no" to restore previous behavior.) A configuration file can now be used for startup options. Also some internal cleanups and a minor bugfix that fixes #192.
1.63 2023-02-12 Reworked audio-video synchronization, with new options -vsync (for Mirror mode) and -async (for Audio-Only mode, to sync with client video). Option -vsync makes software h264 decoding of streamed videos with option -avdec viable on some recent Raspberry Pi models. Internal change: all times are now processed in nanoseconds units. Removed -ao option introduced in 1.62.
1.62 2023-01-18 Added Audio-only mode time offset -ao x to allow user synchronization of ALAC audio playing on the server with video, song lyrics, etc. playing on the client. x = 5.0 appears to be optimal in many cases. Quality fixes: cleanup in volume changes, timestamps, some bugfixes.
1.61 2022-12-30 Removed -t option (workaround for an Avahi issue, correctly solved by opening network port UDP 5353 in firewall). Remove -g debug flag from CMAKE_CFLAGS. Postpend (instead of prepend) build environment CFLAGS to CMAKE_CFLAGS. Refactor parts of uxplay.cpp
1.60 2022-12-15 Added exit with error message if DNSServiceRegister fails (instead of just stalling). Test for Client's attempt to using unsupported AirPlay 2 "REMOTE CONTROL" protocol (with no timing channel), and exit if this occurs. Reworked metadata processing to correctly parse DMAP header (previous version worked with DMAP messages currently received, but was not correct).
1.59 2022-12-12 remove "ZOOMFIX" compile option and make compilation with X11-dependence the default if X11 development libraries are detected (this now also provides fullscreen mode with a F11 or Alt+Enter key toggle); ZOOMFIX is now automatically applied for GStreamer < 1.20. New cmake option -DNO_X11_DEPS compiles uxplay without X11 dependence. Reworked internal metadata handling. Fix segfault with "-vs 0".
1.58 2022-10-29 Add option "-nohold" that will drop existing connections when a new client connects. Update llhttp to v8.1.0.
1.57 2022-10-09 Minor fixes: (fix coredump on AUR on "stop mirroring", occurs when compiled with AUR CFLAGS -DFORTIFY_SOURCE); graceful exit when required plugins are missing; improved support for builds on Windows. Include audioresample in GStreamer audio pipeline.
1.56 2022-09-01 Added support for building and running UxPlay-1.56 on Windows (no changes to Unix (Linux, *BSD, macOS) codebase.)
1.56 2022-07-30 Remove -bt709 from -rpi, -rpiwl, -rpifb as GStreamer is now fixed.
1.55 2022-07-04 Remove the bt709 fix from -v4l2 and create a new -bt709 option (previous "-v4l2" is now "-v4l2 -bt709"). This allows the currently-required -bt709 option to be used on its own on RPi without -v4l2 (sometimes this give better results).
1.54 2022-06-25 Add support for "Cover Art" display in Audio-only (ALAC) mode. Reverted a change that caused VAAPI to crash with AMD POLARIS graphics cards. Minor internal changes to plist code and uxplay option parsing.
1.53 2022-06-13 Internal changes to audio sync code, revised documentation, Minor bugfix (fix assertion crash when resent audio packets are empty).
1.52 2022-05-05 Cleaned up initial audio sync code, and reformatted streaming debug output (readable aligned timestamps with decimal points in seconds). Eliminate memory leaks (found by valgrind). Support for display of ALAC (audio-only) metadata (soundtrack artist names, titles etc.) in the uxplay terminal.
1.51 2022-04-24 Reworked options forVideo4Linux2 support (new option -v4l2) and short options -rpi, -rpifb, -rpiwl as synonyms for -v4l2, -v4l2 -vs kmssink, and -v4l2 -vs waylandsink. Reverted a change from 1.48 that broke reconnection after "Stop Mirroring" is sent by client.
1.50 2022-04-22 Added -fs fullscreen option (for Wayland or VAAPI plugins only), Changed -rpi to be for framebuffer ("lite") RPi systems and added -rpigl (OpenGL) and -rpiwl (Wayland) options for RPi Desktop systems. Also modified timestamps from "DTS" to "PTS" for latency improvement, plus internal cleanups.
1.49 2022-03-28 Addded options for dumping video and/or audio to file, for debugging, etc. h264 PPS/SPS NALU's are shown with -d. Fixed video-not-working for M1 Mac clients.
1.48 2022-03-11 Made the GStreamer video pipeline fully configurable, for use with hardware h264 decoding. Support for Raspberry Pi.
1.47 2022-02-05 Added -FPSdata option to display (in the terminal) regular reports sent by the client about video streaming performance. Internal cleanups of processing of video packets received from the client. Added -reset n option to reset the connection after n ntp timeouts (also reset after "connection reset by peer" error in video stream).
1.46 2022-01-20 Restore pre-1.44 behavior (1.44 may have broken hardware acceleration): once again use decodebin in the video pipeline; introduce new option "-avdec" to force software h264 decoding by libav h264, if needed (to prevent selection of vaapisink by autovideosink). Update llhttp to v6.0.6. UxPlay now reports itself as AppleTV3,2. Restrict connections to one client at a time (second client must now wait for first client to disconnect).
1.45 2022-01-10 New behavior: close video window when client requests "stop mirroring". (A new "no close" option "-nc" is added for users who wish to retain previous behavior that does not close the video window).
1.44 2021-12-13 Omit hash of aeskey with ecdh_secret for an AirMyPC client; make an internal rearrangement of where this hash is done. Fully report all initial communications between client and server in -d debug mode. Replace decodebin in GStreamer video pipeline by h264-specific elements.
1.43 2021-12-07 Various internal changes, such as tests for successful decryption, uniform treatment of informational/debug messages, etc., updated README.
1.42 2021-11-20 Fix MAC detection to work with modern Linux interface naming practices, MacOS and *BSD.
1.41 2021-11-11 Further cleanups of multiple audio format support (internal changes, separated RAOP and GStreamer audio/video startup)
1.40 2021-11-09 Cleanup segfault in ALAC support, manpage location fix, show request Plists in debug mode.
1.39 2021-11-06 Added support for Apple Lossless (ALAC) audio streams.
1.38 2021-10-8 Add -as audiosink option to allow user to choose the GStreamer audiosink.
1.37 2021-09-29 Append "@hostname" to AirPlay Server name, where "hostname" is the name of the server running uxplay (reworked change in 1.36).
1.36 2021-09-29 Implemented suggestion (by @mrbesen and @PetrusZ) to use hostname of machine runing uxplay as the default server name
1.35.1 2021-09-28 Added the -vs 0 option for streaming audio, but not displaying video.
1.35 2021-09-10 now uses a GLib MainLoop, and builds on macOS (tested on Intel Mac, 10.15 ). New option -t timeout for relaunching server if no connections were active in previous timeout seconds (to renew Bonjour registration).
1.341 2021-09-04 fixed: render logger was not being destroyed by stop_server()
1.34 2021-08-27 Fixed "ZOOMFIX": the X11 window name fix was only being made the first time the GStreamer window was created by uxplay, and not if the server was relaunched after the GStreamer window was closed, with uxplay still running. Corrected in v. 1.34
If you need to do this, note that you may be able to use a newer version (OpenSSL-3.0.1 is known to work). You will need the standard development toolset (autoconf, automake, libtool). Download the source code from https://www.openssl.org/source/. Install the downloaded openssl by opening a terminal in your Downloads directory, and unpacking the source distribution: ("tar -xvzf openssl-3.0.1.tar.gz ; cd openssl-3.0.1"). Then build/install with "./config ; make ; sudo make install_dev". This will typically install the needed library libcrypto.*
, either in /usr/local/lib or /usr/local/lib64.
(Ignore the following for builds on MacOS:) On some systems like Debian or Ubuntu, you may also need to add a missing entry /usr/local/lib64
in /etc/ld.so.conf (or place a file containing "/usr/local/lib64/libcrypto.so" in /etc/ld.so.conf.d) and then run "sudo ldconfig".
(Note: on Debian 9 "Stretch" or Ubuntu 16.04 LTS editions, you can avoid this step by installing libplist-dev and libplist3 from Debian 10 or Ubuntu 18.04.) As well as the usual build tools (autoconf, automake, libtool), you may need to also install some libpython*-dev package. Download the latest source with git from https://github.com/libimobiledevice/libplist, or get the source from the Releases section (use the *.tar.bz2 release, not the *.zip or *.tar.gz versions): download libplist-2.3.0, then unpack it ("tar -xvjf libplist-2.3.0.tar.bz2 ; cd libplist-2.3.0"), and build/install it: ("./configure ; make ; sudo make install"). This will probably install libplist-2.0.* in /usr/local/lib. The new libplist-2.3.0 release should be compatible with UxPlay; libplist-2.2.0 is also available if there are any issues.
(Ignore the following for builds on MacOS:) On some systems like Debian or Ubuntu, you may also need to add a missing entry /usr/local/lib
in /etc/ld.so.conf (or place a file containing "/usr/local/lib/libplist-2.0.so" in /etc/ld.so.conf.d) and then run "sudo ldconfig".
All the resources in this repository are written using only freely available information from the internet. The code and related resources are meant for educational purposes only. It is the responsibility of the user to make sure all local laws are adhered to.
This project makes use of a third-party GPL library for handling FairPlay. The legal status of that library is unclear. Should you be a representative of Apple and have any objections against the legality of the library and its use in this project, please contact the developers and the appropriate steps will be taken.
Given the large number of third-party AirPlay receivers (mostly closed-source) available for purchase, it is our understanding that an open source implementation of the same functionality wouldn't violate any of Apple's rights either.
[adapted from fdraschbacher's notes on RPiPlay antecedents]
The code in this repository accumulated from various sources over time. Here is an attempt at listing the various authors and the components they created:
UxPlay was initially created by antimof from RPiPlay, by replacing its Raspberry-Pi-adapted OpenMAX video and audio rendering system with GStreamer rendering for desktop Linux systems; the antimof work on code in renderers/
was later backported to RPiPlay, and the antimof project became dormant, but was later revived at the current GitHub site to serve a wider community of users.
The previous authors of code included in UxPlay by inheritance from RPiPlay include:
lib/playfair
folder. License: GNU GPLlib/
originally stems from this project. License: GNU LGPLv2.1+lib/
concerning mirroring is dsafa22's work. License: GNU LGPLv2.1+Independent of UxPlay, but used by it and bundled with it:
lib/llhttp/
. 라이센스: MIT