
私は theora/vorbis ogg ビデオ ファイルを持っています。しかし、gzip/xz を使用するとファイル サイズが 20%/75% 削減されることに気づきました。したがって、内部フォーマットではコンテンツがあまり圧縮されていないのではないかと思います。外部圧縮フォーマットを使用せずに、ビデオ/オーディオをよりロスレスに圧縮する方法はありますか? ffmepg を使用したソリューションが推奨されます。
出力mediainfo
:
Format : Ogg
File size : 90.9 MiB
Duration : 27 min 52 s
Overall bit rate mode : Variable
Overall bit rate : 456 kb/s
Writing application : Lavf57.56.101
Video
ID : 1911251410 (0x71EB61D2)
Format : Theora
Duration : 27 min 52 s
Bit rate : 298 kb/s
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate : 30.000 FPS
Compression mode : Lossy
Bits/(Pixel*Frame) : 0.005
Stream size : 59.4 MiB (65%)
Writing library : Lavf57.56.101
Audio
ID : 2001534440 (0x774CFDE8)
Format : Vorbis
Format settings, Floor : 1
Duration : 27 min 52 s
Bit rate mode : Variable
Bit rate : 131 kb/s
Channel(s) : 2 channels
Sampling rate : 48.0 kHz
Compression mode : Lossy
Stream size : 26.1 MiB (29%)
Writing library : Lavf57.56.101
答え1
簡単に答えると、次のようになります。いいえ。
ファイルをアーカイブ(zip、7z、rar、gzipなど)に圧縮する場合、アルゴリズムは与えられた情報をより短く保存する方法を探します。これは例えば次のように行われます。ハフマン符号化アルゴリズムは値の頻度をチェックし、最も使用頻度の高い値を最短の数値に格納し、2 番目によく使用される値を 2 番目に小さい数値に格納します... (これは極端に単純化されすぎている- より詳しい説明については、リンク先のウィキペディアの記事をお読みください。また、もちろん、ハフマン コーディングは圧縮の 1 つの (非常に単純な) 例にすぎません。これにより、アーカイブを圧縮するとファイル サイズがさらに小さくなる理由も説明できます。
つまり、ファイル サイズが 75% 削減されるのは、圧縮ツールがビデオ エンコーダやオーディオ エンコーダよりも効率的な情報保存方法を見つけたためです。ただし、通常、情報保存方法は標準で指定されているため、エンコーダに情報保存方法を指示する方法はありません。標準の実装が改善されているため、新しいバージョンのエンコード プログラムが役立つ場合もありますが、通常は、新しいコーデックにのみ適用されます。
ただし、ビデオ プレーヤーは複数の圧縮を同時に処理できません。これは主に、アーカイブ ファイルを解凍してファイル自体を読み取るためにかなりのリソース (RAM と CPU の両方) が必要になるためだと思います。また、必要なのと同じように、最初に全体を解凍する必要があります。これは、ファイルがないと、どのストリームがどこに保存されているかなどを推測するのが非常に難しいためです。
したがって、Theora/Vorbisで作業する必要がある場合、これについてできることはあまりありません。それ以外の場合、ファイルサイズが優先事項である場合は、次のことを検討することをお勧めします。VP8/VP9/264ビット/x265VP9 方式を採用する場合は、FFmpeg の Encode/VP9 ガイド (上記にリンク) に沿ったものをお勧めします。
ffmpeg -i <input> -c:v libvpx-vp9 -crf 15 -b:v 0 -c:a copy <output>
<input>
と<output>
をそれぞれのファイル名(およびファイル拡張子)に置き換えます。*.mkvと*.webmはどちらも動作します(この2つだけ試しました)が、*.webmではヴォルビスオーディオ コーデックとして (-c:a libvorbis -q:a 6
の代わりになど-c:a copy
)、*.mkv には要件がないようです。
-crf
は一定のレート係数を指定します (「一定の視覚品質」と考えてください)。値が低いほど品質が高くなります。
もちろん、上記のすべては、ファイルが効率的にエンコードされ (たとえば、6 Gb/s のビットレートを指定していない)、適切に動作するプログラムを使用していることを前提としています。私自身は、非可逆圧縮されたオーディオ ファイルやビデオ ファイルからほとんど圧縮できたことはありません (ただし、theora や vorbis はほとんど使用しません)。