Конвертируем в ProRes с помощью FFmpeg

Когда я столкнулся с необходимостью обработать AVCHD видео , то мне пришлось его конвертировать в mp4. Копирование потоков в новый контейнер без обработки вызывало появление какие-то артефактов. Позже я выяснил, что они возникали только во время воспроизведения полученного видео. Когда оно проходит финальный рендеринг, то артефактов уже нет. Думаю, что на это не стоит полагаться. Ведь не понятно что получится в результате. Получить максимальное качество рабочего материала можно, если сконвертировать его в формат ProRes.

Начиная с версии 0.11 кодеки ProRes включены в стандартную сборку FFmpeg.


ffmpeg -i ~/Desktop/00000.MTS \
    -copyts -acodec copy -vcodec prores -profile 0 \
    ~/Desktop/out.mov

Качество видео, а значит и средний битрейт, регулируется параметром profile. Он может принимать значение от 0 до 3 включительно. Эти значения соответствуют профилям:

  • -profile 0 — Apple ProRes Proxy
  • -profile 1 — Apple ProRes LT
  • -profile 2 — Apple ProRes 422 for SD
  • -profile 3 — Apple ProRes HQ for HD

Ещё у FFmpeg есть альтернативная версия с нужными кодеками – FFMedia Broadcast.

Для сборки ffmbc может понадобится установить yasm, если его ещё нет. Я установил его через Homebrew.

brew install yasm

Затем распаковываем исходники ffmbc, конфигурируем их командой ./configure –enable-gpl, собираем make и инсталлируем sudo make install.

У кодека ProRes есть несколько ключей:

  • -qscale <значение> или -cqp <значение>

    Задает фиксированное значение квантайзера, которое будет использоваться для каждого кадра. В выходном потоке будет переменнй битрейт.

  • -profile <имя>

    Профиль может принимать одно из значений: proxy, lt, std, hq . Если не задан битрейт, то он выбирается автоматически на основании размера кадра и профиля.

  • -b <битрейт>

    Задает примерное значение постоянного битрейта.

Итак, для перекодирования исходного видео в ProRes нужно выполнить команду:


ffmbc -i ~/Desktop/00000.MTS \
    -copyts -acodec copy -vcodec prores -profile std \
    ~/Desktop/out.mov