Python:从缓冲区播放视频文件
我正在写一个Python程序,它通过TCP连接接收损坏的视频文件片段。
在接收数据时,我把这些数据放进一个变量里,像这样:
film = sock.recv(100000)
我现在做的就是把这些数据写入一个名为'received.mp4'的文件,然后再播放这个文件。
有没有办法可以直接从这个film
的缓存中播放视频呢?
1 个回答
4
当然可以这样做。
我会使用一个外部播放器,然后把数据块通过它的 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库来连接你喜欢的视频播放器。