通过DLNA在Linux中投屏

DLNA投屏是一个非常高效实用的功能,也是众多高端家用播放器必备功能之一。

简而言之,便是把手机或平板电脑(同时支持苹果与安卓)中的界面,比如在线视频、音乐软件,直接通过播放器投射在电视机大屏幕上。

于是我用 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/bashecho "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: 
  
    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

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

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

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/199200.html<

(0)
运维的头像运维
上一篇2025-04-04 17:41
下一篇 2025-04-04 17:43

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注