我正在开发一个 python 程序,它通过 TCP 套接字接收损坏的视频文件 block 。 接收时,我将数据提取到一个变量中,例如:
film = sock.recv(100000)
我目前正在做的是将其写入“received.mp4”文件然后播放。
有没有办法直接从 film
缓冲区播放这个视频?
最佳答案
当然可以。
我会使用外部播放器,然后将 block 输入到它的 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 绑定(bind)到您最喜欢的视频播放器。
关于Python:从缓冲区播放视频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26429470/