|
||||||||||||
Преобразование видео в формат монтажного кодека с помощью ffmpeg
Время создания: 16.09.2021 01:03
Автор: xintrea
Текстовые метки: ffmpeg, монтажный кодек, видеоредактор, mjpeg, pcm, adpcm, wav, avi
Раздел: Компьютер - Linux - Видео в Linux - FFmpeg
Запись: xintrea/mytetra_syncro/master/base/1631743433ds040cjbcr/text.html на raw.github.com
|
||||||||||||
|
||||||||||||
Для того, чтобы использовать видеофайл в видеоредакторах, его вначале нужно подготовить. Если вставлять в видеоредактор файл в исходном (сыром) виде, существует большая вероятность возникновения проблем при работе внутри видеоредактора. Все видеоредакторы плохо работают с кодеками MP4 (mpeg4), h264/h265 и прочими, обеспечивающие максимальное сжатие, и использующие кейфреймы. Для видеомонтажа надо перегнать видеофайл в кодек, в котором каждый кадр является ключевым, а не разностью между последним ключевым кадром и набором преобразований потока по времени. Видеокодек Для бытового использования, в качестве монтажного кодека хорошо подходит видеокодек mjpeg. Он является альтернативой между размером видеофайла и качеством картинки. По сути, он представляет собой последовательнось кадров виде отдельных jpeg-изображений. Для профессионального мотажа его лучше не использовать, а использовать видеокодек со сжатием без потерь, например ffvhuff - Huffyuv FFmpeg или huffyuv. Но тогда придется иметь весьма мощный компьютер с быстрым дисковым вводом-выводом и большим объемом жесткого диска, ибо файлы со сжатием без потерь просто гигантские (10MB mp4 обычно превращаются в 1GB hufyyuv для FullHD разрешения). Звуковой кодек Часто в "сырых" видео используется кодек AAC и другие кодеки на основе психоакустического сжатия, или имеющие переменный битрейт. Такие аудиокодеки не подходят для видеомонтажа. С ними гарантированно возникнут проблемы даже на этапе загрузки видео в видеоредактор (получится рассинхрон видео и звука). А вторая рассинхронизация будет создана в момент сохранения видео после редактирования в итоговый файл. Беспроблемными кодеками являются кодеки семейства PCM (pulse code modulation) или ADPCM (adaptive pulse code modulation). Это простые кодеки, которые имеют постоянный битрейт и представляют собой просто последовательность числовых значений аудио-сигнала во времени (PCM) или высчитываемое значение аудиосигнала на основе дельты от предыдущего значения (ADPCM). WAV-файлы обычно имеют именно такой формат кодирования. В любом случае, PCM/ADPCM кодеки - это хороший выбор в качестве звукового кодека для видеомонтажа. Конвертор ffmpeg имеет в своем составе ADPCM-кодек adpcm_ima_wav, который понимает любая программа видеомонтажа. Контейнер В качестве монтажного контейнера проще всего использовать формат AVI. Это простой и известный всем видеомонтажным программам формат, не содержащий сжатия. Упакованные в такой контейнер видео и аудио потоки легко извлекаются в момент загрузки данных. Команда перекодирования видеофайла Посмотреть информацию о видеофайле (например, чтобы узнать FPS исходника и его разрешение), можно с помощью команды: ffmpeg -i file.mp4 Посмотреть все аудио и видео кодеки, поддерживаемые ffmeg можно командой: ffmpeg -codecs Посмотреть опции кодека mjpeg можно командой: ffmpeg -h encoder=mjpeg Для перекодирования видеофайла в монтажный кодек можно воспользоваться следующей командой: ffmpeg -i input.mp4 -c:v mjpeg -q:v 1 -qmin 1 -c:a adpcm_ima_wav output.avi В данной команде форматы результирующих видео- и аудио-кодеков определяются опцией -c:..., а формат результирующего контейнера ffmpeg вычисляет исходя из расширения файла (в данном случае получится avi-контейнер). Опция -q:v 1 устанавливает максимальное качество генерируемого видеопотока. Опция -qmin 1 описана в man ffmpeg-all, и она устанавливает минимальный video quantizer scale (VBR). Как она коррелирует с опцией -q не совсем понятно, но про нее известно, что она должна выставляться в единицу для того, чтобы опция -q:v 1 работала на максимальное качество. Опция -c:v mjpeg говорит о том, что результирующий кодек для видеопотока будет MJPEG. Опция -c:a adpcm_ima_wav говорит о том, что результирующий аудиопоток будет в формате ADPCM WAV. Опция -huffman optimal не влияет на качество, но по описанию должна оптимизировать размер получаемого файла (на деле ее эффект не виден, см. таблицу ниже). Примеры работы опций:
Чтобы ускорить перекодирование, можно добавить перед именем выходного файла опцию -threads N, где N - количество потоков. Однако похоже, что для кодека mjpeg более чем двукратного роста скорости кодирования (от кодирования без этой опции) невозможно добиться. Видимо, это как-то связано с реализацией многопоточности либо в кодеке, либо в самом ffmpeg. |
||||||||||||
Так же в этом разделе:
|
||||||||||||
|
||||||||||||
|