2014-10-17 37 views
2

我正在研究一個通過TCP套接字接收破碎的視頻文件塊的python程序。 當接收,我拉我的數據到一個變量,如:Python:從緩衝區播放視頻文件

film = sock.recv(100000) 

什麼我目前做的是寫這一個文件「received.mp4」,然後播放。

有沒有一種方法可以直接從film緩衝區播放此視頻?

回答

3

當然,你可以做到這一點。

我會使用外部播放器,並只給該塊到它的stdin像這樣:

# cmdline = ['vlc', '--demux', 'h264', '-'] #pick a media player 
# cmdline = ['mplayer', '-fps', '25', '-cache', '1024', '-'] 
player = subprocess.Popen(cmdline, stdin=subprocess.PIPE) 
while True: 
    data = sock.recv(1024) 
    if not data: 
     break 
    player.stdin.write(data) 

(從http://picamera.readthedocs.org/en/latest/recipes1.html#recording-to-a-network-stream拍攝)

你也可以使用一個命名管道和寫入,或者利用一些python綁定到你最喜歡的視頻播放器。

+0

這似乎是一個體面的方式來做到這一點,但我不能讓它在mp4視頻上運行。有人可以幫助使用VLC終端選項嗎? – Ali 2014-10-17 22:37:53

+0

我剛剛開始工作。 設置'cmdline = ['vlc',' - ']'讓VLC自己弄清楚編解碼器和東西。我的視頻也開始播放,也有聲音! – Ali 2014-10-17 23:42:44