私のケースを助けてください。ffmpeg で問題が発生しました。次のコマンドを使用します:
ffmpeg -i whiskey.mkv -threads 0 -c:v libx264 -crf 28 -preset veryslow -vf "movie=logo.png[wm];[in][wm]overlay=0:0,subtitles=whiskey.srt[out]" whiskey2.mp4
しかしエラーが発生する
root@:~/ffmpeg# ffmpeg -i whiskey.mkv -threads 0 -c:v libx264 -crf 2
8 -preset veryslow -vf "movie=logo.png[wm];[in][wm]overlay=0:0,subtitles=whiskey
.srt[out]" whiskey2.mp4
ffmpeg version N-80522-ge0faad8 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 4.9.2 (Debian 4.9.2-10)
configuration:
libavutil 55. 24.100 / 55. 24.100
libavcodec 57. 46.100 / 57. 46.100
libavformat 57. 38.102 / 57. 38.102
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 46.102 / 6. 46.102
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100
Unrecognized option 'crf'.
Error splitting the argument list: Option not found
品質を損なわずにウォーターマーク+サブをエンコードするコマンドがあれば教えてください。
答え1
libx264 をサポートしていません
エンコーダ libx264 を使用しようとしていますが、ffmpeg
このエンコーダをサポートするように構成されていません。configure
行は空白ですが、libx264 を使用するには--enable-libx264
& が必要です。--enable-gpl
これを修正する最も簡単な方法は静的ビルドをダウンロードするffmpeg
: libx264 をサポートします。
「品質の低下」はありません
フィルタリングには再エンコードが必要ですが、損失のある出力になるオプションを使用しようとしています。
本当に品質を損なわないようにしたい場合はロスレス出力を行う必要がありますが、ファイルサイズが大きくなり、すべてのプレーヤー/デバイスがサポートするわけではないため、ほとんどのユーザーはこれを望んでいません。libx264 を使用したロスレス出力の場合は、を使用します-crf 0
。
おそらく実際に必要なのは、非可逆だが、技術的にロスレスではないとわからないほど十分な品質のものです。この用途では-crf 18
、 .
コマンドには余分な無駄なオプションがあります。整理した例は次のとおりです。
ffmpeg -i whiskey.mkv -i logo.png -filter_complex \
"[0:v][1:v]overlay,subtitles=whiskey.srt" \
-c:v libx264 -crf 18 -preset veryslow output.mp4
入力オーディオがMP4コンテナと互換性がある場合は-c:a copy
、ストリームコピーオーディオを再エンコードするのではなく、