我正在开发一个python程序,它通过TCP套接字接收破碎的视频文件块。 接收时,我将数据拉入变量,如:
film = sock.recv(100000)
我目前正在做的是将其写入文件'received.mp4'然后播放。
有没有办法可以直接从film
缓冲区播放此视频?
答案 0 :(得分: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)
,就像这样:
{{1}}
(摘自http://picamera.readthedocs.org/en/latest/recipes1.html#recording-to-a-network-stream)
你也可以使用命名管道并写入,或者使用一些python绑定到你最喜欢的视频播放器。