FFmpegの高度な設定
このページでは、FFmpeg メディアバックエンドの設定可能な機能を一覧表示します。これらの機能はすべて非公開 API の一部であり、将来、事前の確認なしに変更または削除される可能性があります。環境変数はデフォルトで子プロセスに継承されるため、意図しない結果をもたらす可能性があることに注意してください。
FFmpegおよびQt FFmpegメディアバックエンドからのログ出力の有効化
環境変数を使用して、FFmpegの詳細なログ出力を設定できます。
QT_FFMPEG_DEBUG=1FFmpegライブラリからの追加のログ出力を有効にし、FFmpegライブラリに関連する問題の理解に役立ちます。QT_LOGGING_RULES="*.ffmpeg.*=true"FFmpegプラグイン内のQt開発者ログを有効にします。FFmpegプラグインのログカテゴリは通常、「qt.multimedia.ffmpeg.XXX」という名称で呼ばれます。Qt Multimedia のすべての開発者ログを有効にするには、次のように設定してくださいQT_LOGGING_RULES="*.multimedia.*=true"QT_FFMPEG_DEBUGとQT_LOGGING_RULESの両方を設定すると、QMediaPlayer 、QAudioDecoder 、またはQMediaRecorder からエンコードまたはデコード機能が初めて使用された際に、利用可能なすべての FFmpeg コーデックが出力されます。この情報は、Qt Multimedia が適切な FFmpeg デコーダまたはエンコーダを見つけられない状況を理解するのに役立ちます。 コーデック固有の問題が発生した場合は、Qtのバグ報告にコーデックダンプを添付することをお勧めします。
実験的な FFmpeg コーデックの有効化
FFmpeg では、Opus や Vorbis などのいくつかのコーデックが実験的なものとして提供されています。実験的なコーデックは標準に厳密には準拠しておらず、不安定な場合があります。これらはデフォルトで無効になっています。有効にするには、環境変数 `QT_ENABLE_EXPERIMENTAL_CODECS=1` を設定してください。
許可されるネットワークプロトコルの設定
セキュリティ上の理由から、FFmpeg ライブラリはネストされたプロトコル(他のプロトコルによって使用されるプロトコル)の使用を制限しています。詳細はFFmpeg プロトコルのドキュメントを参照してください。環境変数 `QT_FFMPEG_PROTOCOL_WHITELIST` を使用して、許可されるプロトコルを明示的に上書きすることができます。例:
export QT_FFMPEG_PROTOCOL_WHITELIST=file,crypto,rtp,udp警告: ネストされたプロトコルは、信頼できないデータと併用した場合、セキュリティ上の脆弱性を引き起こす可能性があることに注意してください 。セキュリティおよびビジネス要件に合致するプロトコルのみを許可してください。
RTSPトランスポートの設定
QT_FFMPEG_RTSP_TRANSPORT 環境変数を設定することで、特定の FFmpeg RTSP 低レベルトランスポートを使用して RTSP 入力ストリームを開くことができます。この値は、rtsp:// URL に対して FFmpeg のrtsp_transport 入力オプションに渡されます。たとえば、RTSP 制御チャネル内で TCP インターリーブを使用する場合は、次のようにします:
export QT_FFMPEG_RTSP_TRANSPORT=tcp一般的な値には、udp 、tcp 、udp_multicast 、http 、およびhttps などがあります。詳細は、FFmpegのRTSPプロトコルに関するドキュメントを参照してください。このオプションはデフォルトでは設定されておらず、RTSP以外のメディアソースでは無視されます。
バックエンドでのハードウェアアクセラレーションの設定
- 明示的なデコードおよびエンコードのハードウェアアクセラレーションバックエンド。
FFmpegプラグインは、利用可能性、安定性、効率性、および実装の詳細に基づいて、デコードおよびエンコード用のハードウェアアクセラレーションバックエンドを選択します。選択されたハードウェアバックエンドが期待通りに動作しない場合は、カスタム優先順位リストを設定するか、環境変数
QT_FFMPEG_DECODING_HW_DEVICE_TYPESおよびQT_FFMPEG_ENCODING_HW_DEVICE_TYPESを使用してすべてのハードウェアバックエンドを無効にしてみてください。利用可能なハードウェアバックエンドには以下が含まれます:- cuda
- drm
- dxva2
- d3d11va
- d3d12va,
- OpenCL
- QSV
- VAAPI
- vdpau
- videotoolbox
- mediacodec
- Vulkan
ただし、ハードウェアバックエンドの利用可否は、OS、インストールされているドライバ、FFmpegのバージョン、および設定によって異なります。一部のデバイスタイプについては、Qtのメンテナンス担当者がQt Multimedia での動作テストを行っておらず、期待どおりに動作しない可能性があることを念頭に置いておくことが重要です。本稿執筆時点では、これらのバックエンドには以下が含まれます:
- drm
- opencl
- qsv
- vdpau
- Vulkan
例:
# Set vdpau or cuda encoding hardware backends export QT_FFMPEG_ENCODING_HW_DEVICE_TYPES=vdpau,cuda # Set only d3d12va decoding hardware backend export QT_FFMPEG_DECODING_HW_DEVICE_TYPES=d3d12va # Disable decoding hw backends (set an empty list) export QT_FFMPEG_DECODING_HW_DEVICE_TYPES=, - ハードウェアによるテクスチャ変換。
デコードおよびレンダリングされた動画フレームに対してGPUベースの変換を利用することで、CPU使用率を大幅に低減できます。 私たちは、可能な限り多くのハードウェアバックエンドでこの機能を活用することを目指しています。レンダリング上の問題が発生した場合は、原因を特定するために、GPUテクスチャ変換を無効にしてレンダリングをテストすることを検討してください。GPUテクスチャ変換は、
QT_DISABLE_HW_TEXTURES_CONVERSION環境変数を設定することで無効にできます:QT_DISABLE_HW_TEXTURES_CONVERSION=1。VAAPIハードウェアバックエンドでは、デフォルトでハードウェアテクスチャ変換が無効になっています。有効にするには、QT_XCB_GL_INTEGRATION=xcb_eglを設定してください。 - コーデックプロファイルの不一致を許容する。
コーデックプロファイルがハードウェアの報告された機能と一致しない場合、
QT_FFMPEG_HW_ALLOW_PROFILE_MISMATCH=1を使用してその不一致を無視し、ハードウェアデコードを許可することができます。 このオプションを設定すると、たとえば、VAAPIハードウェアバックエンドでベースラインプロファイルのH.264に対してハードウェアアクセラレーションによるデコードを使用する場合に役立ちます。これは、そのようなストリームのほとんどが、既存のH.264ハードウェアデコーダの制約を満たしているためです。警告: ストリームがサポートされていない場合 、ハードウェアデコードを強制すると、完全に誤ったビデオ出力が生じる可能性があります。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.