2016-12-10 1 views
0

Эй, ребята, я пытался сделать эту работу некоторое время сейчас, и я не могу найти, как заставить аудио/видео синхронизироваться после в конкатенации я искал и тестировал некоторые решения, но не мог заставить его работать.FFMPEG - C# - Аудио и видео не синхронизируются с определенными видеороликами после конкатенации

Вот что я делаю прямо сейчас, все работает, но я должен делать что-то неправильно.

Итак Во-первых, я разделить видео в видео, которое я хочу

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

поэтому я решил Pad все видео после их расщепления:

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, и я уверен, что у меня что-то не хватает.

+0

Попробуйте http://video.stackexchange.com – apocalypse

ответ

0

Мне плохо, поскольку я, кажется, нашел ответ (не уверен на 100%, придется провести еще несколько тестов, но я проверил несколько раз и, похоже, работает до сих пор) сразу после создания этого сообщения, я нашел сообщение, которое было так хорошо скрыто, что .. Я даже не знаю, как я его нашел, но я сделал, и я рад, что это сделал.

Его ответ here

Я был обеспокоен же размер кадра, аудио и видео кодеков для Concat правильно, но я забыл о частоте кадров.

Этот первый образец видео (упомянутый в моем вопросе) частота кадров была 12, , а частота кадров 2-го видео была равна 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 надеюсь, что это может помочь кому-то вроде меня в ближайшем будущем.

наилучшими пожеланиями