MP4 ファイルの n 番目のフレームごとに n 番目のピクセルをダウンロードします。

MP4 ファイルの n 番目のフレームごとに n 番目のピクセルをダウンロードします。

私は帯域幅が制限された環境で働いています。MP4 ファイルをダウンロードできるようにしたいのですが、品質についてはあまり気にしていません。理論的に帯域幅の使用量を約 8 分の 1 に減らすために私が考えたのは、4 ピクセルごとに 1 つ、2 フレームごとに 1 つだけダウンロードすることです。

私が何を意味しているかを説明しましょう。xは「スキップ」を意味します。

たとえば、8x4 の寸法を持つ MP4 ファイルがあるとします。この場合、フレームは次のようになります。

OOOOOOOO
OOOOOOOO
OOOOOOOO
OOOOOOOO

次のように必要な情報のみをダウンロードすることで帯域幅を節約したいと思います。

OxOxOxOx
xxxxxxxx
OxOxOxOx
xxxxxxxx

つまり、基本的に2x2ピクセルブロックは

OO
OO

Ox
xx

したがって、4 つのピクセルすべてではなく、1 つのピクセルだけがダウンロードされます。

同じことをフレームにも適用したいと思います。8fpsのビデオの1秒が次のようになっているとします

[ O O O O O O O O ]

それはこうなる

[ O x O x O x O x ]

番号が付けられたフレームのみが2*nダウンロードされます。

プレーンテキスト文書やBMP画像などの非圧縮ファイルでは、フレームnのデータがフレームn-1に依存しないのであれば、多かれ少なかれ簡単に可能だと思いますが、MP4でこれがどの程度可能かお分かりになる方がいらっしゃいましたら、お教えください。問題のコード化された(?)は、isomiso2avc1mp41

答え1

MP4でこれがどの程度可能かお分かりになる方はいらっしゃいますか?

可能性は0%です

まあ、技術的には、mp4 内のビデオ コーデックによって異なりますが、それが現在 RAW であると仮定すると (ファイルが非常に巨大になります)、時間的圧縮と空間的圧縮の両方を使用するコーデックを使用している可能性があります。彼らの場合は、avc1 (h264 とも呼ばれます) です。

コーデックの空間圧縮は、DTC などの変換を介して空間領域から周波数領域に変換することによって実行されます。ピクセルを復元するには、IDCT のすべての係数が必要です。つまり、すべてをダウンロードする必要があります。

フレームのスキップに関しては、P フレーム (およびおそらく B フレーム) をスキップして、キー (IDR) フレームのみをダウンロードできます。ただし、キー フレームは平均で約 1 ~ 10 秒間隔で配置されます。したがって、0.1 fps で問題ない場合、帯域幅はおそらく半分未満に削減されます。

関連情報