【发布时间】:2021-01-22 07:22:31
【问题描述】:
我正在使用 ffmpeg-python 库。
我使用了示例代码:https://github.com/kkroening/ffmpeg-python/tree/master/examples 来异步读入和处理音频和视频流。处理是自定义的,不是内置 ffmpeg 命令可以实现的(想象一下像 tensorflow 在音频和视频上的深度梦想)。然后我想重新组合我创建的音频和视频流。目前,我能看到的唯一方法是将两个流写入单独的文件(如在此答案中所做的那样:How to combine The video and audio files in ffmpeg-python),然后使用 ffmpeg 将它们组合起来。这样做的主要缺点是结果无法流式传输,即音频和视频必须完全完成处理才能开始播放组合的音频/视频。有没有什么方法可以在不将文件作为中间步骤的情况下组合它们?
从技术上讲,流最初是从 ffmpeg 读取的这一事实是无关紧要的。您不妨假设我处于以下情况:
def audio_stream():
for i in range(10):
yield bytes(44100 * 2 * 4) # one second of audio 44.1k sample rate, 2 channel, s32le format
def video_stream():
for i in range(10):
yield bytes(60 * 1080 * 1920 * 3) # one second of video 60 fps 1920x1080 rgb24 format
# how to write both streams of bytes to file without writing each one separately to a file first?
我想使用ffmpeg.concat,但这需要ffmpeg.inputs,它只接受文件名作为输入。还有其他方法吗?以下是文档:https://kkroening.github.io/ffmpeg-python/。
【问题讨论】:
标签: python python-3.x video ffmpeg