【问题标题】:Python: Play Video file from a BufferPython:从缓冲区播放视频文件
【发布时间】:2014-10-18 00:57:47
【问题描述】:

我正在开发一个 python 程序,该程序通过 TCP 套接字接收损坏的视频文件块。 在接收时,我将数据提取到一个变量中,例如:

film = sock.recv(100000)

我目前正在做的是将其写入文件“received.mp4”然后播放。

有没有办法可以直接从film 缓冲区播放此视频?

【问题讨论】:

    标签: python video tcp


    【解决方案1】:

    当然可以。

    我会使用一个外部播放器,然后将块提供给它的 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 绑定到您最喜欢的视频播放器。

    【讨论】:

    • 这似乎是一种不错的方法,但我无法让它在 mp4 视频上运行。有人可以帮忙解决 VLC 终端选项吗?
    • 我刚刚开始工作。设置cmdline = ['vlc', '-'] 让VLC 自己找出编解码器和东西我猜。我的视频开始播放了,还有声音!
    • 我尝试了这个代码用于麦克风输入(模块 pyaudio),但没有成功。
    猜你喜欢
    • 1970-01-01
    • 2011-10-31
    • 2017-12-15
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多