theora / vorbisビデオを圧縮する


1

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

2
このようなビデオを7-Zipで圧縮すると、実際には同じサイズになります。ビデオファイルに何らかの問題があるか、何らかの形で間違ったファイルサイズが報告されているのを確認したはずです。
ダニエルB

回答:


2

簡単な答えは「いいえ」です。

ファイルをアーカイブ(zip、7z、rar、gzipなど)に圧縮すると、アルゴリズムは指定された情報をより短い方法で保存する方法を探します。これは、例えば介して行われるハフマン符号化、値の頻度のためのアルゴリズムをチェックした後、最短数でMOT頻出値を格納する、第二の最小数の第二の最も使用は、...(これは非常に単純化される -くださいより良い説明については、リンクされたウィキペディアの記事を読んでくださいまた、もちろん、ハフマンコーディングは1つだけです-非常に単純な-圧縮の例)。これは、アーカイブを圧縮するとファイルサイズがさらに小さくなることが多い理由も説明しています。

75%のファイルサイズ削減は、圧縮ツールがビデオおよびオーディオエンコーダーよりも効率的な情報保存方法を見つけたためです。ただし、通常、情報を保存する方法をエンコーダに伝える方法はありません。これは標準で指定されているためです。エンコードプログラムの新しいバージョンは、標準のより良い実装のために役立つことがありますが、通常は、新しいコーデックにのみ適用されます。

ただし、ビデオプレーヤーは複数の圧縮を同時に処理できません。これは主に、アーカイブファイルを解凍してからファイル自体を読み取るために、かなりのリソース(RAMとCPUの両方)が必要だからだと思います。また、必要な場合と同様に、最初に全体を解凍する必要があります。これは、どのストリームがどこに保存されているかなどを、ファイルから推測するのが非常に難しいためです。

したがって、theora / vorbisで作業する必要がある場合、それについてできることはあまりありません。それ以外の場合、ファイルサイズが優先される場合は、VP8 / VP9 / x264 / x265を調べることをお勧めします。VP9-wayに行きたい場合は、FFmpegのEncode / VP9-Guide(上記のリンク)に沿って何かをお勧めします。

ffmpeg -i <input> -c:v libvpx-vp9 -crf 15 -b:v 0 -c:a copy <output>

置き換える<input><output>、それぞれのファイル名(およびファイルの拡張子)で。* .mkvと* .webmの両方が動作します(私はこれら2つだけを試しました)が、*。webmはオーディオコーデックとしてVorbisを必要とするようです(例:-c:a libvorbis -q:a 6ではなく-c:a copy)。ここで、*。mkv には要件がないようです。 -crf定率係数を指定し(「一定の視覚的品質」と考えてください)、値が低いほど品質が高くなります。

もちろん、上記のすべては、ファイルが効率的にエンコードされている(たとえば、6 Gb / sのビットレートを指定していない)ことと、適切に動作するプログラムを使用していることを前提としています。私は、損失のある圧縮されたオーディオファイルやビデオファイルを圧縮することはできませんでした(しかし、theoraやvorbisを使うことはめったにありません)。


答えてくれてありがとう。この場合、内部エンコードをVP9に変換する方法を提供できますか?
xuhdev

FFmpegのEncode / VP9に沿って-ガイドffmpeg -i <input> -c:v libvpx-vp9 -crf 15 -b:v 0 -c:a copy <output><input>および<output>は相関ファイルに置き換えられます。-crf一定のレートファクターを指定し(「一定の視覚的品質」と考えてください)、もちろん、オーディオコーデック(-c:a)もいつでも変更できます。
flolilo

私は、次のエラーを得た:[libvpx-vp9 @ 0x555641b6e1c0] v1.6.1 [ogg @ 0x555641b64980] Unsupported codec id in stream 0 Could not write header for output file #0 (incorrect codec parameters ?): Invalid argumentStream mapping: Stream #0:0 -> #0:0 (theora (native) -> vp9 (libvpx-vp9)) Stream #0:1 -> #0:1 (copy) Last message repeated 1 times
xuhdev

あなたが使用したコードなしでは、何が悪いのか推測することさえできません。私は自分でコードを試してみましたが、私のマシンでは、期待通りに動作します。
flolilo

コードは、あなたが示した正確に何であるffmpeg -i <input> -c:v libvpx-vp9 -crf 15 -b:v 0 -c:a copy <output>
xuhdev
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.