在寻找通过 uPnP 流式传输音频/视频的解决方案一段时间后,Coherence 似乎是最有希望的选择:例如:http://coherence.beebits.net/browser/trunk/Coherence/coherence/backends/gstreamer_renderer。 py似乎是将文件直接播放到 HDMI 电视加密狗所需要的。
奇怪的是,在安装了 Ubuntu coherence 包之后,import coherence
在 Python 终端中运行并没有真正显示出类似这个模块的任何东西。bpython 中的制表符补全显示:
>>> coherence.
┌───────────────────────────────────────────────────────────────────────────┐
│SERVER_ID Version platform │
│sys twisted_version twisted_web_version │
└───────────────────────────────────────────────────────────────────────────┘
这些子模块似乎只是提供有关系统的信息。如何导入并使用 Coherence 将桌面或视频流式传输到 uPnP 屏幕?有基本的入门指南吗?
更新
看起来 GUPnP 有能力链接到 Python:
>>> from gi.repository import GUPnP
>>> GUPnP.ControlPoint.new()
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: new() takes exactly 2 arguments (0 given)
这显然是调用此处记录的函数: https ://developer.gnome.org/gupnp/unstable/GUPnPControlPoint.html
不幸的是,文档没有任何关于如何流式传输到视频接收器的完整示例 - 具体来说,它如何启动通过网络发送视频文件?
更新:这是我用来检测设备的第一步:
import socket
import threading
import time
Addr = None;
StartLock = threading.Lock()
def DoUDP():
global Addr
global StartLock
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #Internet, UDP
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
while 1:
s.sendto('0:0',('192.168.0.255',63630))
data,addr = s.recvfrom(1024)
print data
print 'from', addr
Addr = addr
try:
StartLock.release()
except:
pass
time.sleep(1)
return
StartLock.acquire()
print 'starting...'
udpthread = threading.Thread(target=DoUDP)
udpthread.start();
#... knowing address of the device... send stuff?