Замедленная съемка ffmpeg очень медленно - PullRequest
0 голосов
/ 23 сентября 2018

Я использую

ffmpeg -i IMG_5299.MOV -c:v libx264 -crf 20 -r 60 -filter:v "setpts=0.0015*PTS" -an IMG_5299-speedup.mkv

, чтобы создать 600-кратную задержку из видео H.265 4K 60fps.Я просто хочу, чтобы ffmpeg выбрал каждый 600-й кадр и соединил его с новым видео 60fps.Нет интерполяции, нет ничего.Тем не менее, я получаю только 0,2 кадра в секунду на совсем новом процессоре i5-7600T, в то время как преобразование того же видео без ускорения с использованием

ffmpeg -i IMG_5299.MOV -c:v libx264 -crf 20 -an IMG_5299-2.mkv

дает мне 5 кадров в секунду.Так почему же ускорение видео в 25 раз медленнее, чем просто его преобразование?Делает ли он какую-либо изящную интерполяцию для каждого кадра из 600 или что-то в этом роде?

РЕДАКТИРОВАТЬ: Это строка состояния, которую я получаю после нескольких минут кодирования:

frame=  447 fps=0.2 q=28.0 size=   68639kB time=00:00:06.56 bitrate=85611.1kbits/s dup=0 drop=147650 speed=0.00233x

1 Ответ

0 голосов
/ 24 сентября 2018

Это медленно, потому что вы выбираете один из каждых 666 кадров.Все эти 666 кадров должны быть декодированы и отфильтрованы до того, как будет закодирован один кадр.Допустим, ваша система может декодировать со скоростью 333 кадра в секунду, тогда ваш предел скорости кодирования составляет 0,5 кадра в секунду.

Вы можете профилировать свою пропускную способность декодирования, используя

ffmpeg -i IMG_5299.MOV -an -f null -

. Вы можете ускорить кодирование толькодемультиплексировать пакеты ключевых кадров из MOV.

ffmpeg -discard nokey -i IMG_5299.MOV -c:v libx264 -crf 20 -r 60 -vf "setpts=0.0015*PTS" -an IMG_5299-speedup.mkv
...