1

Я хотел бы закодировать 30-минутное видео с помощью ffmpeg. Я могу добиться этого с помощью

ffmpeg -i in.mp4 -vcodec libvpx -vb 1024k -keyint_min 150 -g 150 -an out.webm

Но я бы хотел кодировать разные сегменты видео с разной скоростью, а не использовать постоянную скорость 1024 КБ. Это возможно?

Я знаю, во сколько они должны переключать кодировку. Например, скажем, 5 минут видео, я хочу скорость кодирования 1024k, а следующие 5 минут я в порядке с битрейтом 250k. Я не хочу использовать VBR или я не хочу вырезать видео и кодировать их с разной скоростью, а затем присоединять к ним.

Это возможно. Я прочитал справочную страницу для ffmpeg и увидел, что есть варианты

startime and time 

Но я не уверен, как именно я могу это сделать, если предположить, что это возможно.

1 ответ1

1

Но я бы хотел кодировать разные сегменты видео с разной скоростью, а не использовать постоянную скорость 1024 КБ. Это возможно?

Нет. Это просто не очень типичный вариант использования. Либо вам нужна постоянная скорость передачи данных (например, при потоковой передаче), либо требуется переменная скорость передачи данных (постоянное качество). В последнем случае кодер выберет подходящую скорость передачи битов, соответствующую вашим настройкам качества, или будет использовать предоставленные вами параметры квантования. См. Этот документ для режимов кодирования, поддерживаемых libvpx.

Я не хочу использовать VBR или я не хочу вырезать видео и кодировать их с разной скоростью, а затем присоединять к ним.

Вероятно, это был бы единственный способ сделать это. Вам нужно будет найти способ экспортировать необработанные видеопотоки VP8 (что возможно с помощью ffmpeg … -f rawvideo out.webm), объединить их вместе, а затем снова обернуть их в контейнер WebM. Я не нашел рабочего решения для этого все же.

Или вы можете изменить исходный код кодировщика libvpx таким образом, чтобы он принимал изменение постоянной скорости передачи в битах за раз.

Я прочитал справочную страницу для ffmpeg и увидел, что есть варианты для startime and time ...

В FFmpeg таких опций нет. Есть опция -ss которая изменяет время начала процесса кодирования, и опция -t которая указывает, как долго вы хотите, чтобы FFmpeg кодировал. Но они полезны только для резки видео.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .