web-dev-qa-db-ja.com

ffmpegを使用してビデオをDNxHD / DNxHR形式に変換する方法は?

Cinelerra-cvの操作方法に関するチュートリアルに従っています。最初に言われたように、cinelerraを操作する最初のステップは、ビデオクリップをdnxhd形式に変換することです。それはただ言われた、それを行う方法を説明していません。

いくつかの調査の後、ffmpegに出会いましたが、dnxhdに関してffmpegを使用する方法がわかりません。ffmpegについて収集した知識はほとんどありません。

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

ただし、これは機能せず、ffmpegを使用してdnxhdに変換する際に見た例はわかりませんが、使用する理由を説明せずに毎回いくつかの異なるタグを持っているようです。

9
sharkant

これはうるさいエンコーダなので、次のような適切なパラメータを選択する必要があります。

  • フレームレート
  • ピクセル形式/色空間
  • 幅×高さ/解像度/フレームサイズ
  • ビットレート

受け入れられる値については、以下の有効な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は、2K、4K、8Kなどの1080pより大きい解像度用です。

DNxHRが必要な場合は、-profile:vなどの-profile:v dnxhr_hq出力オプションを追加します。

指定できる値は、dnxhddnxhr_444dnxhr_hqxdnxhr_hqdnxhr_sqdnxhr_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 codec から変更されました。


有効な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

format フィルターを使用して適切なピクセル形式を選択します。上記のDNxHDの例を参照してください。

14
llogan