Я новичок в FFMPEG ... Но исследования, которые я проводил, показывают, что это, безусловно, возможно.
Выявление пропущенных кадров:
!/ Бен / Баш
rm framediffs.lis
ffmpeg -i MPEG0004.AVI f% d.png
framenum = 1, в то время как [$ framenum -lt 50] do file1 = f $(($ framenum)). png file2 = f $(($ framenum + 1)). png сравнить -метрическое RMSE $ file1 $ file2 NULL: 2> diff.lis fdiff = cat diff.lis |cut -d ' ' -f 1
echo $ file1 $ file2 $ fdiff >> framediffs.lis framenum = $(($ framenum + 1)) готово
кошка framediffs.lis
Имитация некоторых пропущенных кадров:
сравнить -метрическое СКО f45.png f47.png NULL: сравнить -метрическое СКО f45.png f48.png NULL: сравнить -метрическое RMSE f46.png f48.png NULL: сравнить -metric RMSE f47.png f50.png NULL:
затем, если необходимо, вырежьте плохую часть файла ...
Вырезание сегмента без перекодирования: ffmpeg -i source.mp4 -ss 00:00:05 -t 00:00:10 -c copy cut_video.mp4
Или заменить сегмент из файла, который не показывает потери ...
Замена сегмента из хорошего файла: ffmpeg -i in.mp4 -vf trim = X -c: копия out.mp4 ffmpeg -i in.mp4 -vf trim = X, setpts = 'if(eq(N, 0), 0, PTS)'-c: копия out.mkv
Если это аудио-зависимость, извлеките аудио, а затем ремукс плохой файл ...
Извлечение аудио из файла и повторное смешивание (я думаю, что выбор сегмента из двух ключевых кадров возможен): ffmpeg -i vid.mkv -map 0:2 -ac 2 aud.wav avconv -i INPUT_FILE_WITH_BROKEN_SOUND.mp4 -i SECOND_INPUT_FILE.mkv -c копия -карта 0:v:0 -карта 1:a:1 OUTPUT.mp4
Как я уже сказал, я новичок и был бы признателен за мысли, чтобы избежать потери времени.
Спасибо!