Переменная частота кадров с FFmpeg

1034
Nicke Manarin

Давайте предположим, что у меня есть 5 изображений с соответствующими задержками между каждым изображением:

  1. 60мс;
  2. 54ms;
  3. 70ms;
  4. 23МС;
  5. 40мс;

Как я могу рассказать FFmpegэту информацию?

0

1 ответ на вопрос

1
Gyan

В дополнение к методу множественных инструментов, показанному на https://stackoverflow.com/q/28086775/5726027, его можно также выполнить с помощью одной длинной команды.

ffmpeg -i a1.jpg -i a2.jpg -i a3.jpg -i a4.jpg -i a5.jpg -filter_complex "[1]settb=1/1000,setpts=PTS+0.06/TB[b]; [2]settb=1/1000,setpts=PTS+0.054/TB[c]; [3]settb=1/1000,setpts=PTS+0.07/TB[d]; [4]split[4a][4b]; [4a]settb=1/1000,setpts=PTS+0.023/TB[e]; [4b]settb=1/1000,setpts=PTS+0.04/TB[f]; [0][b][c][d][e][f]concat=n=6" -vsync vfr -r 1000 -video_track_timescale 1000 vt.mp4 

Для каждого изображения, кроме первого, применяются фильтры timebase и timestamp. Так как вам нужна точность в миллисекундах, временная база установлена ​​на 1/1000 сек = 1 миллисекунда. Затем setpts добавляет требуемую задержку (в секундах). Поскольку я считаю, что самый последний кадр видео фактически имеет длительность по умолчанию, определяемую частотой кадров кодека, самое последнее изображение должно быть продублировано. Первая копия устанавливает значение PTS в соответствии с его задержкой, а вторая имеет свою PTS, установленную на предполагаемую длительность последнего изображения.

Я планирую добавить ffmpeg в качестве опции для кодирования записей, судя по всему, небольшая запись (500 кадров) заняла бы много места, разве нет другого способа? Может быть, фильтр масштабирования менее подробный. Nicke Manarin 7 лет назад 0
Что ты записываешь? Gyan 7 лет назад 0
Экран, веб-камера или простые изображения в качестве входных данных. Nicke Manarin 7 лет назад 0
Тогда вам не нужно беспокоиться о VFR. x264 очень хорошо компактно хранит подобные кадры. Он хранит идентичные кадры в 30-40 байтах. Gyan 7 лет назад 0
Да, но это не всегда разница в 10 мс, если пользователь выбирает 1 секунду задержки, например ... Nicke Manarin 7 лет назад 0
Для задержки в 1 секунду это 24 дублированных кадра, поэтому ** ~ 800 байт ** для хранения. Gyan 7 лет назад 0

Похожие вопросы