次のような問題が発生しました。
私は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 はエンコードには機能しませんでした。