Linux上使用DLNA协议在电视上播放视频

Written by: algebnaly

Date: 2025-04-27T12:55:49.000Z

电视上支持的投屏功能分为Miracast和DLNA, 这两者侧重点不同, Miracast用于实时展示画面,但是不适合音视频播放,会有丢帧、声音卡顿等现象。

DLNA则相反,适合用来播放音频视频,这篇文章介绍如何在Linux控制电视播放视频。

使用miniserve serve视频文件

首先需要一个http服务器serve视频文件,这里我选择miniserve。 切换到视频文件所在的目录,接着运行如下命令:

miniserve .

这样,当前miniserve将会serve当前目录下的所有文件,然后使用浏览器进入miniserve给出的链接, 可以看到一系列文件名,右键复制要播放的视频的地址。

使用gupnp-universal-cp发送DLNA命令

gupnp-universal-cp是一个GUI程序,用于发送DLNA命令以控制电视播放视频。 Arch Linux下软件包gupnp-tools会提供这个工具。 运行gupnp-universal-cp(中文名称是”UPnP通用控制点”),如果Linux与电视在同一局域网下,则gupnp-universal-cp应该已经发现启用了电视,接着展开电视设备,可以看到这个设备提供了 AVTransport服务, 展开这个服务, 双击SetAVTransportURI,CurrentURI中填写前面复制的视频地址,CurrentURIMetaData不用填,然后点击调用就会开始播放了。 其他的还有一些Play, Stop,Seek之类的动作(Action),用来实现播放、暂停等。

结论

miniserve+gupnp-universal-cp这一套多少是有点手动了,好处是可以执行所有的UPnP动作,对于有更多需求的人可以考虑功能更丰富的媒体服务器,例如Emby, UMS等。