linux投屏代码(如何在Linux下使用)

linux投屏代码(如何在Linux下使用)(1)

编者按:本文系 Linux 中国公开投稿计划所接受的第一篇投稿,而且投稿作者是一位初中学生,让我们为他点赞!

一般来说,安卓设备和 Windows 设备投屏使用的是 miracast 协议,但是该协议要求网卡支持 p2pwifi,而 Linux 下大多数网卡驱动不支持 p2pwifi。

于是我用 Python FFmpeg DLNA 完成了一个在 Linux 下的投屏方案。这个方案的不足是延迟有点大。

设置

下面是如何实现。

先装这个 DLNA 库:

pip3 install dlna

然后用 pactl查找 “监视器信源”(中文输出) 或 “Monitor Source”(英文输出):

pactl list sinks

示例输出:

Sink #0 State: RUNNING Name: alsa_output.pci-0000_05_00.6.HiFi__hw_Generic_1__sink Description: Family 17h (Models 10h-1fh) HD Audio Controller Speaker Headphones Driver: module-alsa-card.c Sample Specification: s16le 2ch 44100Hz Channel Map: front-left,front-right Owner Module: 9 Mute: no Volume: front-left: 53814 / 82% / -5.14 dB, front-right: 53814 / 82% / -5.14 dB balance 0.00 Base Volume: 65536 / 100% / 0.00 dB Monitor Source: alsa_output.pci-0000_05_00.6.HiFi__hw_Generic_1__sink.monitor Latency: 16676 usec, configured 16000 us...

然后创建一个 CGI 脚本 screen.flv。首先。建立放置该脚本的目录:

mkdir screencast mkdir screencast/cgi-bin

然后通过 cat来直接创建该脚本:

cat screencast/cgi-bin/screen.flv #!/bin/bash echo "Content-Type:video/x-flv" echo ffmpeg -f pulse -i -f x11grab -i :0 -vcodec h264_nvenc pipe:.flv eof

请用上面获得的监视器信源替换文件中的 。

并为它设置可执行权限:

chmod x screencast/cgi-bin/screen.flv

注意:如果没有 Nvidia 显卡,或者要使用其他的硬件加速,请把编码方案 h264_nvenc替换为相应的编码方案。不建议采用软解方式,延迟非常高。

投屏

需要投屏时,首先启动本地 Web 服务器:

cd screencast python3 -m http.server --cgi 9999&

然后,找到你的 DLNA 设备,然后把 location后面的 URL 复制下来:

dlna device

示例输出:

=> Device 1: { "location": "http://192.168.3.118:1528/", "host": "192.168.3.118", "friendly_name": "Kodi", ...

找到你的 Linux 电脑的局域网 IP 地址:

ip addr

示例输出:

3: wlp2s0:

启动投屏的命令如下:

dlna play -d

请相应替换其中的 和 参数,此处我替换后的命令是:

dlna play -d http://192.168.3.118:1528/ http://192.168.3.117:9999/cgi-bin/screen.flv

然后在你的电视上设置接受投屏,各种电视设备设置投屏方式不同,请参照具体设备说明。

稍等片刻,视频就会出现在电视上了。投屏效果如下:

linux投屏代码(如何在Linux下使用)(2)

作者简介:

calvinlin:一个普通的深圳初中生。

via: https://www.bilibili.com/read/cv15488839

作者:calvinlin编辑:wxy

本文由贡献者投稿至 Linux 中国公开投稿计划,采用CC-BY-SA 协议发布,Linux中国荣誉推出

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页