通过DLNA/UPnP流式传输媒体文件

17 投票
3 回答
11183 浏览
提问于 2025-04-17 19:52

我现在在我的树莓派上运行Raspbmc,并且开启了UPnP流媒体播放功能。

我的目标是写一个简单的Python程序,用来播放视频或音乐列表。

我试过了Coherence这个库,但它总是报错,我也搞不太懂,因为它的文档很乱。所以我在找一个更简单的方法或库。

用Python把媒体文件流式播放到我的电视上,最简单的方法是什么呢?

3 个回答

1

你可以通过gi.repository来使用Python的GUPnP绑定。可以在文档中查找有关GUPnP和GSSDP、GUPnP AV的信息。

你可以把它们和一个像django+SQLite数据库这样的迷你网页服务器结合起来,来定义一种内容目录服务(CDS)。另外,你还可以使用Gstreamer(有一个叫Gst的Python绑定)。通过这些元素,你可以使用SSDP构建一个自定义服务器来发现内容;从Gstreamer中,你可以获取每个媒体项目的元数据,还可以使用Gstreamer的“rtspsrc”来进行流媒体播放。

1

仅针对音频, 我用rygel得到了不错的效果。 关键是要在.config/rygel.conf文件中配置GstLaunch的pulseaudio连接器。 下面是我的配置部分,但你可以通过以下命令找到正确的pulseaudio源:

pactl list | egrep -A2 '^(\*\*\* )?Source #' | grep 'Name: .*\.monitor$' | awk '{print $NF}' | tail -n1

这是我的GstLaunch部分:

[GstLaunch]
enabled=true
launch-items=myaudiowav;myaudiompeg

myaudiowav-title=WAV audio on @HOSTNAME@
myaudiowav-mime=audio/x-wav
myaudiowav-launch=pulsesrc device=alsa_output.pci-0000_00_14.2.analog-stereo.monitor ! audio/x-raw,channels=2 ! wavpackenc

myaudiompeg-title=MPEG audio on @HOSTNAME@
myaudiompeg-mime=audio/mpeg
myaudiompeg-launch=pulsesrc device=alsa_output.pci-0000_00_14.2.analog-stereo.monitor ! audio/x-raw,channels=2 ! lamemp3enc target=quality q
uality=6
5

有一个轻量级的纯Python库叫做 dlnap,它可以让你在同一个本地网络中的DLNA/UPnP设备上播放媒体文件。

撰写回答