使用 FFMPEG 将视频转换为帧,然后将帧转换为带有原始声音的视频

使用 FFMPEG 将视频转换为帧,然后将帧转换为带有原始声音的视频

有没有办法使用 FFMPEG 将视频分解为单独的图像文件,然后将这些图像文件重新组合成视频,并使原始视频的音频与新的视频轨道同步?

我相信其中一个关键因素可能是正确设置帧速率,但我尝试过的所有组合都没有效果。

我尝试过的组合如下:

ffmpeg -i "/InputVideoFilePath" "/OutputImageFilePath" 

(无论输入文件、输出文件还是两者上是否有帧速率规范,此命令都会返回相同数量的输出图像文件。)

然后我按照以下命令将音频拉到单独的文件中:

ffmpeg -i "/InputVideoFilePath" "/OutputAudioFilePath"

然后我通过输入以下内容之一将图像重新组合成另一个视频文件:

  1. ffmpeg -i "/OutputImageFilePath" "/OutputVideoFilePath"
  2. ffmpeg -i "/OutputImageFilePath" -r 23.98 "/OutputVideoFilePath"
  3. ffmpeg -r 23.98 -i "/OutputImageFilePath" -r 23.98 "/OutputVideoFilePath"

(23.98 是原始视频帧率)

到目前为止,方法 1 和方法 2 制作的视频都比原始视频短,而方法 3 制作的视频长度相同。我不明白设置输入的帧速率有什么区别,因为输入只是一系列图像(即,一系列图像怎么会有帧速率?)。FFmpeg 文档指出,设置输入的帧速率会导致时间戳被忽略,但如果图像不是视频的一部分,它们怎么会有时间戳呢?

使用方法 3 后,我使用以下命令将 mp3 音频叠加在新创建的视频文件上:

ffmpeg -i "/PathToVideoFile" -i "/PathToAudioFile" "/PathOfFinalVideoOutput"

最终产品只是稍微不同步,但仍然很明显。如有必要,我可以显示每个步骤的 FFmpeg 输出(当然,输出很多)。

相关内容