我想将视频转换为带音频的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
我猜这与切片有关。
答案 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