開啟dlna投屏功能的小技巧 dlna怎么用電視


開啟dlna投屏功能的小技巧 dlna怎么用電視

文章插圖
開啟dlna投屏功能的小技巧 dlna怎么用電視

文章插圖
編者按:本文系 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怎么用電視】
開啟dlna投屏功能的小技巧 dlna怎么用電視

文章插圖
開啟dlna投屏功能的小技巧 dlna怎么用電視

文章插圖

    推薦閱讀