FFMPEG: Windows で「DLL amfrt64.dll を開けませんでした」

FFMPEG: Windows で「DLL amfrt64.dll を開けませんでした」

次のような問題が発生しました。

私はWindows 10で写真や動画の一括リサイズ/圧縮にffmpegを使用しています。バージョン3を使用していましたが、ffmpegのバージョン4.4にアップグレードしてから出力の品質が低下しました。スクリプトを変更して出力エンコーダを明示的に定義する必要があることがわかりましたが、h264を定義すると常にこのエラーが発生します。

DLL amfrt64.dll failed to open

答え1

私が見つけた解決策もお知らせしたいと思います。ffmpeg (Windows ビルド) にはコンパイルされた h264 オプションがほとんどないようです。こちらを確認してください:

ffmpeg.exe -encoders | find "264"
<cut>
 V..... libx264              libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)
 V..... libx264rgb           libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB (codec h264)
 V..... h264_amf             AMD AMF H.264 Encoder (codec h264)
 V..... h264_nvenc           NVIDIA NVENC H.264 encoder (codec h264)
 V..... h264_qsv             H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (Intel Quick Sync Video acceleration) (codec h264)
 V..... nvenc                NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc_h264           NVIDIA NVENC H.264 encoder (codec h264)

したがって、「h264」のみを入力すると、最初にリストされているオプション、つまり AMD のオプションが想定されます。AMD CPU を実行していない場合は、おそらくこのエラーが発生します。

解決策は、ffmpeg で指定された適切なコーデック バージョンを定義することです。私の場合は次のとおりです。

ffmpeg4.4 -i input.mp4 -codec:v h264_qsv output.mp4

次のような他のDLLエラーメッセージも表示される可能性があることに注意してください。

Cannot load nvcuda.dll

すべては、使用するコーデック名と実行するプラットフォーム (Intel、AMD、NVIDIA) によって異なります。また、エンコードには、「エンコーダー」としてリストされているコーデックも使用できることに注意してください。たとえば、上記のリストの libx264 はエンコードには機能しませんでした。

関連情報