FFmpeg ビデオのアップスケーリング

FFmpeg ビデオのアップスケーリング

まず、タイトルについてもう少し説明したいと思います。アップスケーリングではデータが追加されないということ(アップスケーリング時によく聞かれる質問)ではなく、別のことを言っているのです。

生のビデオA1(854x480)があります

スケールを無視して A1 から B1 をエンコードします。したがって、854x480 は同じままです。

ffmpeg -i C:\A1.mkv -preset veryslow -crf 24 C:\B1.mkv

このビデオをプレーヤーで再生し、プレーヤーのウィンドウを拡大してアップスケールすると、ビデオは 1092 x 614 になり、フレーム 88 のスクリーンショットを保存します。

私はスケール1092x614を指定してA1からC1をエンコードします(スクリーンショットのように)

ffmpeg -i C:\A1.mkv -preset veryslow -crf 24 -filter_complex scale=1092:614 C:\C1.mkv

C1のフレーム88のスクリーンショットをネイティブ画面サイズ(1092x614)で保存します。

両方のエンコードに Raw Original を使用しているため、両方のスクリーンショットは同じに見えるだろうと想定していましたが、そうではありませんでした。アップスケールされたエンコード C1 は、手動でアップスケールされたエンコード B1 に比べて品質がかなり劣っています。

プレーヤーで手動でアップスケールして画像を表示すると、ffmpeg はエンコード中に同じことを行うため、私が見ているのと同じ画像が表示され、それに基づいてエンコードが構築されると考えていましたが、ffmpeg が使用するレンダリング エンジンが異なっているか、それほど優れていないようです。

この問題を回避する方法はありますか?

別のテクニックで同様のことを実現できますか? たとえば、Original Raw A1 のメタデータを編集し、幅:高さを設定すると、どのプレーヤーでもそのサイズでビデオを開き、再生時に知らないうちにアップスケールされます。

私の使用例では、ほとんどの主要なビデオ ホストで認識される寸法をシミュレートしようとしています。しきい値を下回るビデオは、特定の設定ではホストによってエンコードされません。

答え1

おっしゃるとおり、元のビデオは未加工で、圧縮されていないことを意味します。プレーヤーを使用して手動でアップスケールすると、圧縮されずに補間されます。つまり、最高品質のままです。ただし、-crf 24 は高圧縮です。ビデオをアップスケールされた未加工のビデオのようにしたい場合は、-crf 19 以下を試してください。

関連情報