mp4ファイルを<に変換する最良の方法は何ですかdiv id = "16e25bd77c">

品質を損なうことなく(vp8またはvp9を使用)ffmpegを使用しますか?

ffmpeg -i in.mp4 out.webmを実行すると、品質が非常に悪くなります。 -b:vを介してターゲットビットレートを指定し、crfを介して一定品質モードを指定できます。つまり、

ffmpeg -i in.mp4 -crf 10 -b:v 1M out.webm

これにより品質が向上します。ただし、このためには、入力ビデオ(ここでは1M)のビットレートを検索する必要があります。

入力のビットレートよりもはるかに大きな値をターゲットビットレートに指定すると(たとえば、-b:v 100M)、ffmpegは次のように見えることにも気づきました。入力ビデオのビットレートをvp9で使用するか、vp8で少し高いビットレートを使用します。ただし、このソリューションは、これを行うための意図された方法ではないようです。

crf値をどのように選択し、その理由は何ですか?

のビットレートを自動的に選択するパラメータはありますか?入力ファイルと、入力ファイルと同じ品質を得るのに適したcrf値?

コメント

  • ビットレートを0に設定します。crfを試してみてください。 。しかし、値がターゲットではなく上限として機能するため、高ビットレートの方法も機能します。
  • @Mulvya:ビットレート0は制限がないことを意味しますか?'これはmanページで見つかりません。
  • ビットレートがゼロに設定されていない場合、CRFはその値によって制約されます。ゼロの場合、'そうではありません。' VPnエンコーダの癖です。
  • わかりました。ただし、ビットレートパラメータを完全に省略すると、品質が非常に悪くなります。'ビットレートの上限を指定します。
  • リンク(200k)(最初のoptiを参照)オン)。 WebM b:v 0については、このページを参照してください。

回答

回答

2パスの一定品質モードを使用します:¹

ffmpeg -i input.mp4 -b:v 0 -crf 30 -pass 1 -an -f webm /dev/null ffmpeg -i input.mp4 -b:v 0 -crf 30 -pass 2 output.webm 

説明:

ビデオビットレートをゼロに設定し、CRF(Constant Rate Factor)も指定すると、特定の知覚品質レベルを対象とする一定品質モードが有効になります。 VP9の場合、CRFの範囲は0(最高品質)から63(最小ファイルサイズ)です。

ビデオのビットレートをゼロに設定することが重要です。ビデオのビットレートを指定しない場合、デフォルトで低い値に設定され、各フレームに最大ビットレートが設定される制約付き品質モードになります。これはストリーミングには役立ちますが、動きの多いフレームでは見栄えを良くするために必要な帯域幅がないため、品質が大幅に低下します。

品質が低下するもう1つの理由は、webm(VP9)は、最良の結果を得るために2つのパスでエンコードすることを好みます。最初のパスはビデオに関する統計をコンパイルし、2番目のパスで使用してより小さく高品質のビデオを作成します。

ffmpegVP9ドキュメントを参照してください。 詳細を知りたい場合。

トランスコーディングに関する一言

ちなみに、一般的に、トランスコーディング形式(圧縮されたビデオを取得し、異なるコーデック)は、不可逆ビデオエンコーディングからの通常のエラーを追加するだけでなく、古いものからのアーティファクトを保持しようとして新しい形式でビットを浪費するため、悪い考えです。

文字通り「品質を損なうことなく」を意味します

ffmpegのVP9エンコーダーの-lossless 1オプションは、ロスレス品質モードを有効にしますが、ファイルサイズが大幅に増加する可能性があります。

必要なのはこれだけです:

ffmpeg -i input.mp4 -lossless 1 output.webm 

低品質のivで-lossless 1を試したときid = “b3d6c164f5″>

、結果のwebmは100倍大きく、これは私には受け入れられる。ただし、mp4ファイルがすでに非常に高品質である場合、サイズの違いはそれほど大きくないと思います。


脚注1: 「UNIXではなくMicrosoftWindowsを使用している場合は、/dev/nullNULに変更してください。

コメント

  • すばらしい回答ありがとうございます
  • /dev/null?これはどういう意味ですか?Windowsユーザーにとって同等のものは何ですか?上書きしていますか<最初のパスでdivid = "87635a08a5">

?この回答には、各コンポーネントが正確に何をしているのかについてさらに説明する必要があります。'中間ユーザーには多くの説明がありません。

  • こんにちはHatefriend:私の答えには、長い説明セクションと詳細情報へのリンクがすでに含まれているので、'長くしないほうがいいです。あなたの特定の質問に答えるMicrosoftWindowsに関する脚注を見ましたか?また、前述のように、最初のパスのcompi入力ファイルに関する統計。入力が上書きされることを心配する必要はありません。
  • これら2つのコマンド(Ubuntu 20.10、ffmpegバージョン4.2.2)を使用して.MTSファイルを.webmに変換してみました。しかし、エラーが発生しました:"指定されたマッピングファミリ-1のチャネルレイアウト5.1(side)が無効です。出力ストリーム0:1の初期化エラー-出力ストリーム#0:1のエンコーダーを開くときにエラーが発生しました-bit_rate、rate、width、heightなどのパラメーターが正しくない可能性があります"
  • 答えてくれてありがとう。トランスコーディングが一般的に悪い考えである場合、mp4ビデオをwebmに変換し、webmビデオをmp4に変換する必要がある場合は、代わりに何をお勧めしますか?
  • 回答

    Linuxでは optimizeVideo を使用します。これは、 Googleの推奨事項。

    結果は、品質の違いはわかりませんが、通常は桁違いに小さいビデオになります。

    ロゴ

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です