| 会员登录 立即注册

打印 上一主题 下一主题

如何在 Linux 下使用 DLNA 投屏

[复制链接]
跳转到指定楼层
楼主
3AAA 发表于 2022-3-10 10:34:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
楼主
3AAA
2022-3-10 10:34:42 4882 3 看楼主


编者按:本文系 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 screencastmkdir screencast/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:.flveof
请用上面获得的监视器信源替换文件中的 。

并为它设置可执行权限:
chmod +x screencast/cgi-bin/screen.flv
注意:如果没有 Nvidia 显卡,或者要使用其他的硬件加速,请把编码方案 h264_nvenc替换为相应的编码方案。不建议采用软解方式,延迟非常高。

投屏


需要投屏时,首先启动本地 Web 服务器:
cd screencastpython3 -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
然后在你的电视上设置接受投屏,各种电视设备设置投屏方式不同,请参照具体设备说明。

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



作者简介:

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

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

作者:calvinlin编辑:wxy

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

使用道具 举报

沙发
anderside 发表于 2022-3-10 10:35:10 | 只看该作者
沙发
anderside
2022-3-10 10:35:10 看楼主
转发了
回复 支持 反对

使用道具 举报

板凳
独上西楼1998 发表于 2022-3-10 10:35:35 | 只看该作者
板凳
独上西楼1998
2022-3-10 10:35:35 看楼主
转发了
回复 支持 反对

使用道具 举报

地板
zhengtse 发表于 2022-3-10 10:36:33 | 只看该作者
地板
zhengtse
2022-3-10 10:36:33 看楼主
mark
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 返回列表

3AAA 当前离线
白银会员

查看:4882 | 回复:3

关于我们  |   侵权投诉受理  |   联系我们  |   Archiver  |  
免责声明:邳州信息网所有言论只代表发表者个人观点,与本站无关
Copyright © 2009-2025 pzxxw.com 版权所有:邳州金银杏文化传媒有限公司  

苏公网安备 32038202000401号

快速回复 返回顶部 返回列表