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

use*_*674 5 ffmpeg

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

我相信关键要素之一可能是正确设置帧速率,但我尝试过的所有组合都没有奏效。

我试过的组合如下:

ffmpeg -i "/InputVideoFilePath" "/OutputImageFilePath" 
Run Code Online (Sandbox Code Playgroud)

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

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

ffmpeg -i "/InputVideoFilePath" "/OutputAudioFilePath"
Run Code Online (Sandbox Code Playgroud)

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

  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"
Run Code Online (Sandbox Code Playgroud)

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