Coherence似乎是最有希望的選擇:例如:http://coherence.beebits.net/browser/trunk/Coherence/coherence/backends/gstreamer_renderer.py似乎是將文件直接播放到HDMI電視適配器所需的一段時間後,通過uPnP流式傳輸音頻/視頻的解決方案。連貫性(或GUPnP)的用法?流A/V?
奇怪的是,在安裝Ubuntu coherence軟件包後,在Python終端中運行import coherence
並沒有真正顯示這個模塊。 bpython中的Tab完成顯示:
>>> 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?
奇怪的是,您的示例顯示了網絡上的另一臺計算機,但從未使用Tronsmart設備。我需要先指定一個協議/端口嗎?查看我更新的問題,我用來查看設備的本地IP的代碼。 – NoBugs
您不需要事先知道IP地址:UPnP的其中一點是SSDP讓我們發現設備。我真的不明白你的腳本試圖做什麼......我想它可能會嘗試自己做發現部分?這看起來並不有用:它已經由所有UPnP堆棧(如GUPnP)完成,並且正確地做出很多工作,但該腳本甚至沒有完成。 – jku
gupnp-universal-cp(來自gupnp-tools)可能是仔細檢查設備是否爲標準UPnP設備的好方法。這不會讓你更接近於能夠進行2盒推送,但至少你會看到它是否是UPnP設備。 – jku