Как преобразовать видео с помощью ffmpeg в формат DNxHD / DNxHR?

12

Я следую учебному пособию о том, как работать с cinelerra-cv, в самом начале было сказано, что самый первый шаг в работе с cinelerra - это преобразование любого видеоклипа в формат dnxhd. Было просто сказано, не объяснено, как это сделать.

После некоторого исследования я наткнулся на ffmpeg, но я не представляю, как его использовать в отношении dnxhd, с небольшими знаниями, которые я собрал о ffmpeg, я думаю, как это сделать:

ffmpeg -i <video-clip> -vcodec dnxhd <video-clip-in-dnxhd>

однако, это не работает, и примеры, которые я видел при преобразовании в dnxhd с помощью ffmpeg, я не понимаю, они, казалось, каждый раз имели несколько разных тегов, не объясняя, почему их использовать.

sharkant
источник
1
deb-indus.org/tuto/ffmpeg-howto.htm#Encoding_VC-3 предложил быffmpeg -i <input_file> -vcodec dnxhd -b <bitrate> -an output.mov
Rinzwind
спасибо, я видел это раньше, и я был похож: Должен ли я указать битрейт и у него не должно быть звука (-an)? .... я имею в виду можно работать только в cinelerra с видеоклипами dnxhd без звука?
sharkant
1
-b <int> : Set video bitrate in bit/s ( default = 200k ).поэтому я предполагаю, что вы должны добавить битрейт, так как 200k не является допустимым вариантом. Но -anя бы бросил :)
Rinzwind
битрейт зависит от исходного файла или файла, в который вы хотите конвертировать? .... я имею в виду, если я просто попробую использовать 200, это может сработать?
sharkant
Нет. Вам нужно указать битрейт для этого конкретного кодера.
llogan

Ответы:

18

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

  • частота кадров
  • формат пикселей / цветовое пространство
  • ширина х высота / разрешение / размер кадра
  • битрейт

См. Допустимые параметры DNxHD ниже для принятых значений.


Пример DNxHD

Этот пример будет масштабироваться до 1280x720, выбирать частоту кадров 30000/1001 (или 29,97) и формат пикселя YUV 4: 2: 2 в плоскости.

ffmpeg -i input -c:v dnxhd -vf "scale=1280:720,fps=30000/1001,format=yuv422p" -b:v 110M -c:a pcm_s16le output.mov
  • Если ваш входной файл уже соответствует некоторым из принятых параметров, вам не нужно объявлять их вручную.

  • Контейнером выходного формата для DNxHD обычно является MXF или MOV.


Пример DNxHR

DNxHR для разрешений больше 1080p, таких как 2K, 4K и 8K.

Если вы хотите DNxHR, добавьте параметр -profile:vвывода, например -profile:v dnxhr_hq.

Допустимые значения: dnxhd, dnxhr_444, dnxhr_hqx, dnxhr_hq, dnxhr_sq, dnxhr_lb.

  • DNxHR LB: dnxhr_lb- Низкая пропускная способность. 8-бит 4: 2: 2 ( yuv422p). Качество в автономном режиме.
  • DNxHR SQ: dnxhr_sq- Стандартное качество. 8-бит 4: 2: 2 ( yuv422p). Подходит для формата доставки.
  • DNxHR HQ: dnxhr_hq- Высокое качество. 8-бит 4: 2: 2 ( yuv422p).
  • DNxHR HQX: dnxhr_hqx- Высокое качество. 10-бит 4: 2: 2 ( yuv422p10le). UHD / 4K Вещание качественной доставки.
  • DNxHR 444: dnxhr_444- Качество отделки. 10-бит 4: 4: 4 ( yuv444p10le). Кинокачественная доставка.

Приведенный выше список был адаптирован из кодека DNxHR .


Допустимые параметры DNxHD

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

Вы можете показать список с помощью следующей команды:

ffmpeg -f lavfi -i testsrc2 -c:v dnxhd -f null -

Важные замечания о частоте кадров

  • Частота кадров отсутствует в списке, созданном из этой команды. ffmpegбудет слепо принимать любую частоту кадров для этого кодера, и программное обеспечение Avid, как сообщается, примет ее (неподтвержденную), но битрейт DNxHD должен соответствовать только конкретной частоте кадров. Для максимальной совместимости я рекомендовал использовать только правильную комбинацию битрейт / частота кадров. Поэтому используйте приведенную выше команду для получения правильных битрейтов и форматов пикселей, принимаемых ffmpeg, и сделайте перекрестную ссылку на Список разрешений Avid DNxHD или Технический документ DNxHD (стр. 9) для правильной частоты кадров.

  • Частоты кадров, указанные в ссылках выше, используют неточные округленные приближения. Подходящие значения перечислены ниже; сокращенное название слева, а правильное значение справа.

    • 29,97 = 30000/1001 (или используйте псевдоним ntsc)
    • 59,94 = 60000/1001
    • 23,967 = 24000/1001 (или используйте псевдоним ntsc-film)

Больше вариантов

Дополнительные параметры, специфичные для кодировщика, и список поддерживаемых форматов пикселей см. В следующих разделах:

ffmpeg -h encoder=dnxhd

ошибки

ff_frame_thread_encoder_init failed
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!

Это означает, что ваша частота кадров, ширина, высота, формат пикселей и / или битрейт неверны. Обратитесь к действительным параметрам DNxHD выше для принятых значений.

pixel format is incompatible with DNxHD profile

Выберите правильный формат пикселя, используя фильтр формата . Смотрите пример DNxHD выше.

llogan
источник