Когда я столкнулся с необходимостью обработать 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