目前,众多电视厂商以不同协议支持了将手机上的视频扩展到电视上播放,包括 AirPlay,DLNA,Miracast 等等。对于使用 iPhone / iPad / MacBook 的苹果生态用户,AirPlay 投屏和镜像仍然是最佳选择。然而家里的 2018 版 LG TV 只有 DLNA 而没有原生 AirPlay 支持,爱奇艺,Bilibili 等 APP 无法通过 DNLA 投屏观看(优酷可以完美支持,表扬一下!)。好在使用树莓派可以轻松搭建一个 AirPlay 接收器,再用 HDMI 连接到电视上即可实现 AirPlay 向电视投屏啦。
硬件需求
我使用的是 Raspberry Pi 3 B+,官方文档表明 Raspberry Pi Zero 也可以运行,使用更新的树莓派设备流畅度和效果会更好。
配置步骤
如果你的树莓派是全新的,首先用电脑将树莓派标准操作系统写入 SD 卡,参见官方文档。首次启动后根据系统提示设置语言/地区,连接 WiFi,安装自动更新并重启。
RPiPlay 是一个开源软件。下载并安装过程非常简单:
- 从 GitHub 下载源代码
git clone https://github.com/FD-/RPiPlay.git
cd RPiPlay
2. 安装依赖包
sudo apt-get install cmake libavahi-compat-libdnssd-dev libplist-dev libssl-dev
3. 从源代码编译
mkdir build
cd build
cmake ..
make
4. 运行
./rpiplay -n RPiPlay -a hdmi -l
运行命令中的参数(完整的命令行参数可以在这里查看):
- -n RPiPlay 设置 AirPlay 设备的名称为 RPiPlay
- -a hdmi 设置音频输出为 HDMI
- -l 设置优化延迟(音视频内容产生时立即解码输出,实测这一参数可以明显减少音频卡顿问题,然而根据官方文档这也可能导致音画有些许不同步)。
先来看看使用效果吧。运行程序后,连接在同一 WiFi 下的 iPhone / iPad 就可以看到镜像投屏到 RPiPlay 的选项了:
使用过程中发现音频有卡顿,甚至偶尔出现完全没有声音的现象。搜索了一下发现是一个常见问题,根据网上的经验:
- 命令的 -l 参数可以显著改进音视频流畅度(上面的命令已经包含);
- 增加树莓派显存(GPU memory)到 256MB,方法请看这里;
- 使用上述优化后流畅度基本满意,如果仍有问题可以近一步在配置中降低树莓派输出视频的分辨率到 720P。
5. 树莓派上使用 Ctrl + C 退出 RPiPlay 程序。
6. 将 RPiPlay 设置为开机登录时自动运行
RPiPlay 长期使用偶尔会因为程序 bug 或者硬件资源占用过多出现死机问题,这时需要退出程序或者重启树莓派。如果 RPiPlay 连接电视使用,可能再找来外接键盘运行命令就不是那么方便了。下面我们将 RPiPlay 设置为开机自动启动,这样如果出现问题只需要重启树莓派(拔插电源)即可自动进入程序。
在设置之前,务必确保树莓派的 SSH 已开启。因为一旦设置开机登录自动启动,RPiPlay 将无法通过 Ctrl + C 退出,导致无法回到树莓派主控界面更改配置或运行其他程序。
树莓派默认开机自动登录,所以只需要近一步设置登录时自动启动 RPiPlay 即可。编辑默认用户(pi)的 .bashrc 文件(/home/pi/.bashrc),在末尾添加如下内容(来源):
# within an SSH-session, ${SSH_TTY} will be set
if [ "x${SSH_TTY}" = "x" ]; then
/home/pi/RPiPlay/build/rpiplay -n RPiPlay -a hdmi -l
fi
保存退出后,RPiPlay 将在树莓派重启后自动开启,无需再使用外接键盘输入命令。