web-dev-qa-db-ja.com

品質の低下を最小限に抑えてH.264ビデオを再エンコードするにはどうすればよいですか?

多くのMPEG-TSファイル(.TSコンテナですがH.264ビデオ)を持っています。順方向/逆方向または早送りでスキップすると、非常に遅くなり、ピクセル化されるなどの例外があります。

私は研究を試みており、それらが非常に少ない参照ブロックでエンコードしていたと推測しています(つまり、DVB-S衛星ストリームからのキャプチャです)。

Handbrake(.MP4コンテナー)で再エンコードすると、非常によく再生され、ビデオ内でのシークが瞬時に行われます。

品質の低下を最小限に抑えてMPEG-TSファイルをトランスコード/再エンコードできますか?もしそうなら、私の最善の策は何ですか?それぞれ約2 Mbps(つまり、1時間あたり2 GB)ですが、「最小限の品質損失」でファイルあたり10 GB以上が必要な場合は、再エンコードしたくありません。ビデオは同じサイズを維持したいと思っています。

誰か私に何かアドバイスはありますか?

20
SofaKng

おそらくコンテナの問題です。新しいコンテナ形式にコピーしてください

avconv -i input.ts -c copy output.mp4

問題を解決できるかもしれません。これは100%ロスレスになります。それがうまくいかない場合、18のcrfは通常「視覚的にロスレス」と見なされます。これをHandBrake(「ビデオ」タブの下)またはavconvで設定できます。

avconv -i input.ts -c:a copy -c:v libx264 -crf 18 -preset veryfast output.mp4

プリセットは、超高速、超高速、超高速、高速、高速、中速、低速、低速、超低速です。プリセットが遅いほど、ファイルは小さくなります(ただし、エンコード時間は長くなります)。私の個人的な実験では、ファイルサイズの点で最大の低下は超高速と超高速の間であることがわかりました。

注:必要に応じて、ffmpegはavconvが実行できるすべてのことを同じ構文で実行できます(avconvのすべてのインスタンスをffmpegに置き換えるだけです)。

脚注:詳細については、 this ffmpeg x264エンコーディングガイドが役立つ場合があります。

23
evilsoup

ビデオエンコーディングの詳細については説明しません。制約が特定のビデオコーデック(h.264)または特定のビットレートである場合、「最小限の品質損失」などはありません。制限要因は常に存在します。より高い品質を維持する方法があった場合、いわばビデオエンコーディングの聖杯となるでしょう。

X264のようなエンコーダーで実行できることはそれほど多くありません。メインの「コントロール」ノブは、定数レートファクター設定であり、何らかの形で「一定品質」ファクターとして機能します。それとは別に、1つの特定のエンコーダーで再エンコードして同じ視覚的/経験された品質を維持しながら、ビットレートをどれだけ節約できるかには、技術的な制限があります。

もちろん、たとえば、XviD(単純なMPEG 4 Part IIエンコーダー)とx264(今日の最も高度なh.264エンコーダー)では異なる結果が得られます。そして、Mainconcept h.264エンコーダーを購入して、同じ平均ビットレートで品質を向上させるかどうかを確認することもできます。

ビデオのエンコードでは、ソースマテリアルにも依存するため、とにかくいくつかの試行を実行する必要があります。フットボールの試合は、スヌーカーのラウンドよりもエンコードが難しくなります。 x264には、特定のタイプの調整を可能にするいくつかのオプションがあります。たとえば、FFmpegの-tune filmオプションを使用した映画ですが、違いはごくわずかです。

例と詳細については、 FFmpeg:究極のビデオおよびオーディオ操作ツール を参照してください。

8
slhck

ブルーレイの場合MPEG-TSファイルをエンコードする場合、ハンドブレーキハイプロファイルを使用し、次の設定で詳細タブを使用します。RF 20

b-adapt=2:rc-lookahead=60:bframes=8:direct=auto:trellis=2:ref=16:subq=10:me=umh:merange=24:analyse=all

エンコードには少し時間がかかりますが、ブルーレイとの区別が困難です。

目標が同じ場合サイズコーデック/圧縮が異なるため、これは起こりません。ファイルのサイズと品質は同じではありません。

1
davefromcamp