是否可以将音频和视频从ffmpeg-python结合起来,而不首先写入文件?



我使用的是ffmpeg-python库。

我已经使用了示例代码:https://github.com/kkroening/ffmpeg-python/tree/master/examples异步读取和处理音频和视频流。处理是自定义的,不是内置的ffmpeg命令可以实现的(想象一下音频和视频上的tensorflow deep dreaming)。然后我想重新组合我创建的音频和视频流。目前,我能看到的唯一方法就是把两个流都写出来单独的文件(如在这个答案中所做的那样:如何在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/.

看来你必须使用管道。看看使用numpy"逐帧处理视频的例子。如果你传入'pipe:'而不是文件名,那么你可以使用stdin。写推送原始数据

相关内容

最新更新