可以使用Open AirPlay提供的airplay.jar包来实现。
基本命令如下:
1 | java -jar airplay.jar -h ip:[port] -a password -d |
命令来实现桌面到电视,-d改-p filename可以直接播放图片。
声音投射命令:
1 | pactl load-module module-raop-sink server=appltv_address |
但是这个方案现在有几个问题:
- 分辨率有问题,1080p的桌面在电视机上有明显的画质下降;
- jdk必须使用Oracle的,OpenJDK会异常;
- 投射桌面必须用X.org会话登录桌面,Xwayland会话不可以,只会黑屏;
- 只投射画面,声音需要单独用pactl来将PulseAudio音频流播放到设备,否则声音还从电脑扬声器出来,但是现在Fedora 29上会初始化raop模块失败,故现在没实现声音;
- Apple TV不能以无密码的方式投射,会有403错误,设置密码后带密码参数正常。
所以实际在Fedora 29下,Java版本使用了Oracle JDK 11.0.1的tar包,使用env命令修改PATH和JAVA_HOME两个环境变量来运行成功。