文章插图
文章插图
编者按:本文系 Linux 中国公开投稿计划所接受的第一篇投稿 , 而且投稿作者是一位初中学生 , 让我们为他点赞!
一般来说 , 安卓设备和 Windows 设备投屏使用的是 miracast 协议 , 但是该协议要求网卡支持 p2pwifi , 而 Linux 下大多数网卡驱动不支持 p2pwifi 。
于是我用 Python + FFmpeg + DLNA 完成了一个在 Linux 下的投屏方案 。这个方案的不足是延迟有点大 。
设置下面是如何实现 。
先装这个 DLNA 库:
pip3install dlna
然后用
pactl
查找 “监视器信源”(中文输出) 或 “Monitor Source”(英文输出):pactl listsinks
示例输出:
Sink#0State:RUNNINGName:alsa_output.pci-0000_05_00.6.HiFi__hw_Generic_1__sinkDescription:Family17h(Models10h-1fh)HDAudioControllerSpeaker+HeadphonesDriver:module-alsa-card.cSample Specification:s16le2ch44100HzChannel Map:front-left,front-rightOwner Module:9Mute:noVolume: front-left:53814/82%/-5.14dB,front-right:53814/82%/-5.14dBbalance0.00Base Volume:65536/100%/0.00dBMonitor Source:alsa_output.pci-0000_05_00.6.HiFi__hw_Generic_1__sink.monitorLatency:16676usec,configured16000us...
然后创建一个 CGI 脚本
screen.flv
。首先 。建立放置该脚本的目录:mkdirscreencast mkdirscreencast/cgi-bin
然后通过
cat
来直接创建该脚本:cat screencast/cgi-bin/screen.flv #!/bin/bashecho\"Content-Type:video/x-flv\"echoffmpeg -f pulse -i -f x11grab -i :0 -vcodec h264_nvenc pipe:.flv eof
请用上面获得的监视器信源替换文件中的。
并为它设置可执行权限:
chmod+x screencast/cgi-bin/screen.flv
注意:如果没有 Nvidia 显卡 , 或者要使用其他的硬件加速 , 请把编码方案
h264_nvenc
替换为相应的编码方案 。不建议采用软解方式 , 延迟非常高 。投屏需要投屏时 , 首先启动本地 Web 服务器:
cdscreencastpython3-m http.server --cgi 9999&
然后 , 找到你的 DLNA 设备 , 然后把
location
后面的 URL 复制下来:dlnadevice
示例输出:
=> Device 1: { \"location\": \"http://192.168.3.118:1528/\", \"host\": \"192.168.3.118\", \"friendly_name\": \"Kodi\", ...
找到你的 Linux 电脑的局域网 IP 地址:
ipaddr
示例输出:
3: wlp2s0:
启动投屏的命令如下:
dlnaplay -d
请相应替换其中的 和 参数 , 此处我替换后的命令是:
dlnaplay -d http://192.168.3.118:1528/ http://192.168.3.117:9999/cgi-bin/screen.flv
然后在你的电视上设置接受投屏 , 各种电视设备设置投屏方式不同 , 请参照具体设备说明 。
稍等片刻 , 视频就会出现在电视上了 。投屏效果如下:
【开启dlna投屏功能的小技巧 dlna怎么用电视】
文章插图
文章插图
推荐阅读
- 手机能一键投屏到电视方法 投屏到电视如何放大成全屏
- 开启通话自动录音步骤 怎么设置通话录音功能
- 电视投屏怎么投 TCL电视投屏怎么操作
- OPPO手机语音助手的开启教程 oppo手机怎么召唤小布
- 详解投影机连接wifi的方法 投影仪投屏怎么用
- 手机投屏电脑最简单方法 惠普电脑投屏快捷键
- win7怎么设置投屏 win7投屏电脑
- 微信深色模式开启步骤分析 新版微信怎么设置黑暗模式呢
- 安卓提示音功能开启教程 ios14充电提示音怎么设置
- airplay怎么投屏到电视上 airplay投屏电视