一般来说 安卓设备/windows设备投屏用的是miracast协议,但是这玩意要求网卡支持p2pwifi 但是linux下这玩意的支持貌似很差
于是用python+ffmpeg+dlna搓了个延迟有点大的投屏方案
先装这个dlna库
然后
1 2 3 4 5 6 7 8 9 10
| mkdir screencast mkdir screencast/cgi-bin cat <<eof>screencast/cgi-bin/screen.flv #!/bin/bash echo "Content-Type:video/x-flv" echo
ffmpeg -f pulse -i Speeker name here -f x11grab -i :0 -vcodec h264_nvenc pipe:.flv eof chmod +x screencast/cgi-bin/screen.flv
|
写完cgi后 要对这个脚本进行一点修改
将 Speeker name here 替换成在pactl list sinks 中找到的”监视器信源”
如果没有nvidia显卡 或者是要使用其他的硬件加速 把H264_nvenc 替换为其他的 不建议软解 延迟非常高 还卡
需要投屏时
1 2 3 4 5
| cd screencast python3 -m http.server --cgi 9999
dlna device (找到你的dlna设备,然后把location后面的url复制下来) dlna play -d 上一步的url http://你的lan ip(不是localhost):9999/cgi-bin/screen.flv
|
稍等片刻 视频就会出现在电视上了