您当前的位置: 首页 >  linux

Linux小百科

暂无认证

  • 0浏览

    0关注

    1185博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Linux下DIY DLAN投屏方案

Linux小百科 发布时间:2022-03-22 10:39:40 ,浏览量:0

我用 Python + FFmpeg + DLNA 完成了一个在 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  Device 1:
{
    "location": "http://192.168.3.118:1528/",
    "host": "192.168.3.118",
    "friendly_name": "Kodi",
...

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

ip addr 

示例输出:

3: wlp2s0:  mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 74:4c:a1:82:2e:3f brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.117/24 brd 192.168.3.255 scope global dynamic noprefixroute wlp2s0
       valid_lft 58283sec preferred_lft 58283sec
    inet6 240e:3b3:2ee3:9530:d005:e492:6243:9/128 scope global dynamic noprefixroute 
       valid_lft 6738sec preferred_lft 3138sec
    inet6 240e:3b3:2ee3:9539:f289:6043:c56a:4e7b/64 scope global dynamic noprefixroute 
       valid_lft 7189sec preferred_lft 3589sec
    inet6 240e:3b3:2ee3:9539:3714:eaf0:c549:b8c9/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 7188sec preferred_lft 3588sec
    inet6 fe80::c746:2540:ab7b:20aa/64 scope link 
       valid_lft forever preferred_lft forever
    inet6 fe80::3543:2637:e0fc:3630/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

启动投屏的命令如下:

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

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

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

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

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

作者简介:

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

关注
打赏
1665632672
查看更多评论
立即登录/注册

微信扫码登录

0.0506s