如何将视频转换为使用ffmpeg同步的gif和mp3?

时间:2019-08-11 20:07:24

标签: ffmpeg

我想将视频转换为带音频的gif。两者在同时播放时应该匹配。

我使用的命令以某种方式生成的结果有些偏离。

要创建gif:

function getCustomCover(currentTitle, callback){
  currentCoverURL = settings.default_image;

  $.each(cover_data, function( key, value ) {
      if (value.title === currentTitle){
          currentCoverURL = value.image;
      }
  });

  callback(currentCoverURL);
}

要创建mp3:

ffmpeg -ss 00:00:10 -i input.mp4 -t 4 -pix_fmt rgb24 -r 10 -filter:v "scale=-1:300" out.gif

我猜这与切片有关。

1 个答案:

答案 0 :(得分:0)

未经测试:您可以尝试以下两个选项之一。如果仍然无法使用,请提供一个短片(MP4链接),可以对其进行测试以提供所需的解决方案...

选项1)尝试使用-itsoffset代替-t ...

ffmpeg -ss 00:00:10 -itsoffset 4 -i input.mp4 -pix_fmt rgb24 -r 10 -filter:v "scale=-1:300" out.gif

ffmpeg -ss 00:00:10 -itsoffset 4 -i input.mp4 out.mp3

选项2)避免出现关键帧(视频轨道和音频轨道)的不匹配时间...

首先修剪视频(获取与您时间最近的视频关键帧处可用的任何音频):

ffmpeg -ss 00:00:10 -i input.mp4 -t 4 trimmed.mp4

然后使用修剪的MP4(将已同步音频)作为输出GIF和MP3的来源。

ffmpeg -i trimmed.mp4 -pix_fmt rgb24 -r 10 -filter:v "scale=-1:300" out.mp4

ffmpeg -i trimmed.mp4 out.mp3