通过DLNA/UPnP流式传输媒体文件
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设备上播放媒体文件。