FFMPEG - C# - 串联后某些视频上的音频和视频不同步

时间:2016-12-10 20:53:43

标签: c# audio video ffmpeg synchronization

嘿伙计们我已经尝试了这项工作一段时间了,我似乎无法找到如何在连接后同步音频/视频,我已经搜索并测试过了一些解决方案,但无法使其发挥作用。

这就是我现在所做的,一切正常,但我必须做错事。

首先,我将视频分成我想要的视频

System.Diagnostics.Process.Start(ffmpegPath, "-i " + 
video.Path + " -ss " + StartTime + " -t " + Duration + " " + video.Output);

"切割/分裂"我想要的视频就像我想要的那样,我尝试将视频连接在一起(使用-safe 0来使用绝对路径,否则它不起作用):

System.Diagnostics.Process.Start(ffmpegPath, 
"-f concat -safe 0 -i " + txtFile + " C:\\Downloads\\Build\\" + rdn.Next(0,1000) + ".mp4");

之后,我发现音频/视频有时不同步,所以我搜索并找到this

所以我决定在拆分后填充所有视频:

System.Diagnostics.Process.Start(ffmpegPath, 
"-i " + video.Output + " -af apad -c:v libx264 -shortest -avoid_negative_ts make_zero -fflags +genpts -report " + padding);

然后重新构建它,但它最终具有相同的音频不同步。

这是我第一次使用mp4s和FFMPEG,我确定我错过了什么。

1 个答案:

答案 0 :(得分:0)

我感觉很糟糕,因为我似乎找到了答案(不是100%肯定,将需要做一些更多测试,但我测试了几次,它似乎工作到目前为止)在发布这个帖子后,我发现一个非常隐蔽的帖子......我甚至不知道我是怎么发现它的,但我做了,我很高兴我做到了。

他的回答是here

  

我担心相同的帧大小,音频和视频编解码器要连接   没问题,但我忘记了帧速率。

     

第一个样本视频(在我的问题中提到)帧率为12,   第二视频帧率为25;这就是进行同步的原因   问题

     

现在,我已将帧速率25设置为这两个视频(-r 25)并且它是   像魅力一样工作:)

     下面的

是完整的转换代码:

     

ffmpeg.exe -i“f:\ 1.avi”-r 25 -af apad -vf scale = 1280:720 -crf 15.0   -vcodec libx264 -acodec aac -ar 48000 -b:192k -coder 1 -rc_lookahead 60 -threads 0 -shortest -avoid_negative_ts make_zero -fflags + genpts   01.mp4希望它能在不久的将来帮助像我这样的人。

     

最好的问候

相关问题