FFmpeg:エンコードする前にビデオをスケーリングする必要があります


0

現在、便宜上、DVDコレクションをエンコードしています。

この特定のタイトルのDVDをエンコードする前に、サンプルをいくつか作成しました。テレビで再生すると、(ffmpegを使用した)アップスケールビデオが元のVOB(TVでアップスケール)よりも良く見えることに気付きました。

テレビのメディアプレーヤーは、ffmpegのスケールフィルターと比較して、効率の低いスケーリングを適用するためだと思います。

それが常に当てはまるかどうかはわかりませんので、今のところ元のスケールを維持することにしました。

将来、エンコードされた(x264、mp4)ビデオのスケーリングを行うことになりますが、これを行うと品質が低下しますか?VOBをMP4にエンコードするとき、またはMP4をスケーリングするときに同じ品質が得られるときに、スケールフィルターを適用する必要がありますか?

サンプルを見ている間、私は違いを見ませんでしたが、ビデオを比較することは非常に難しいので、何かを見逃したかもしれません。


エンコード設定は何ですか?
ギャン

2つのパスで非常に遅いプリセットを使用しています:ffmpeg -i input.vob -vcodec libx264 -pass 2 -preset veryslow -threads 0 -b:v 900k -acodec copy out.mp4 。ffmpegでスケーリングする-vf "scale=-1:720, crop=1280:720"には、ソースが16:9でないときに使用します。
iznav

エンコードされたビデオのスケーリングを避けます。あなたのビットレートは、720pコンテンツの低い側にあります。
ギャン

@Mulvya満足のいく範囲に固執している限り、3000kのような値に増やしたとしたら、エンコード後にスケーリングしても大丈夫ですか?
iznav

回答:


0

将来、エンコードされた(x264、mp4)ビデオのスケーリングを行うことになりますが、これを行うと品質が低下しますか?

スケーリングは、ビデオビットストリームを変更する破壊的な操作です。スケールフィルターを適用する場合、ビデオを再エンコードする以外に選択肢はありません。再エンコードする場合、もちろん品質を維持するためにビデオをロスレスで圧縮できますが、通常、スペースを節約し、さまざまな再生デバイスとの互換性を確保するために損失の多いエンコーダー(x264やx265など)を使用します(すべてのテレビがロスレスを処理するわけではありません)ビデオ)。

後でスケーリングすることにした場合、基本的にはすでに圧縮されたビデオを2回圧縮します。

  1. 元のVOB(DVDに合うように既にエンコードされています)
  2. libx264でエンコードする
  3. libx264によるスケーリングと再エンコード

そのため、ステップ2の出力が、後で別の圧縮ステップを「生き残る」のに十分であることを確認する必要があります。

VOBをMP4にエンコードするとき、またはMP4をスケーリングするときに同じ品質が得られるときに、スケールフィルターを適用する必要がありますか?

次の2つのオプションがあります。

  1. 元のVOBから再エンコードしながらビデオスケーリングします。これにより時間を節約でき、別のエンコード手順を回避できます。2パスエンコーディングでは、出力に適切なビットレートを選択してください。たとえば、1080pまたは720pにスケーリングする場合、それぞれ8〜10 MBit / sまたは3〜5 MBit / s前後のビットレートを選択します。

  2. 後でビデオをスケーリングします。ここでは、2回エンコードしているため、世代の損失により品質が低下する可能性があります。それがあなたの計画であるなら、少なくとも最初のエンコードステップのために、あなたが出力のために十分に高いビットレートまたは十分に低い一定の品質係数を選択することを確認してください。たとえば、最初の(スケーリングされていない)エンコーディングプロセス(VOBからMP4へ)では、ワンパス設定を-crf 16使用できます。これにより、視覚的にほとんどロスのない出力が保証されます。


2番目のシナリオでは、ビデオを再エンコードせず、スケールフィルターを適用しながらストリームをコピーします。ソースビデオをスケーリングしなくても、より高い解像度をサポートするデバイスでこのビデオを視聴する場合、スケーリングされます。ffmpeg -i source -c copy -vf scale=-1:720 out.mp4私のようなものを使用することで、使用するスケールフィルターがffmpegのものであることを確認しているだけです、それは正しいですか?
iznav

ビデオストリームをコピーして、同時に拡大縮小することはできません。上記で書いたように、スケーリングはビットストリームの変更を必要とする破壊的な操作です。コマンドが無効で、「ビデオ出力ストリーム0:0にフィルターグラフ 'scale = -1:720'が定義されましたが、コーデックコピーが選択されました。フィルターとストリームコピーを一緒に使用することはできません」というエラーメッセージが表示されます。
slhck
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.