web-dev-qa-db-ja.com

ビデオエンコーディング:ビデオファイルのサイズはfpsとともにどのくらい増加しますか?

たとえばの次の大ヒット作を考えるとピータージャクソン(ホビット)とジェームズキャメロン(アバター2)は、フレームレート48 fps(またはそれ以上)-つまり通常の24fpsよりも高いフレームレートで撮影されます。 エンコードされたビデオのファイルサイズはfpsとともにどのくらい増加しますか

Fpsを増やすと、フレーム間の差はますます小さくなります。したがって、ファイルサイズは線形よりも小さくなると思います。これは本当ですか? 経験則はありますか?または、24、48、60、および96 fps(最新のビデオコーデックを使用)でエンコードされた同じビデオのサンプルファイルサイズを持っている人はいますか?

(副次的な質問:フルHDを超える画像サイズ(フルHDから4kなど)でビデオファイルのサイズはどのくらい増加しますか?)

6
knweiss

ファイルサイズに影響を与える唯一のものはビットレートです。 1fpsまたは120fpsを実行でき、ビットレートが1000Mbsの場合、ファイルサイズはまったく同じになります。定義上、ビットレートはファイルサイズを定義します。自由にテストしてください。ビデオを撮り、10の異なる次元と10の異なるfpsで出力すると、同じ(または無視できる)ファイルサイズになります。

これは単純化したものですが、ファイルサイズと品質について説明したい場合は、まったく別の説明になります。

4
Uninspired

理論的なアプローチを試してみます。私の理論を証明または反証するいくつかの実例を見て​​みたいと思います。良い質問!コメントがある場合や欠陥を見つけた場合は、遠慮なくコメントしてください。


現在のエンコーダー(例としてMPEG-4/AVC/h.264を取り上げます)の場合、フレームレートは思ったほど重要ではありません。レート制御がなく、すべての画像が同じベースQP(量子化パラメーター)でエンコードされていると仮定しましょう。


あなたは次のように正しいです:動きの違い( ITU-R P.91 で定義されているように、よく読んでください) 48 fpsビデオの2つのフレームの間24fpsの同じビデオよりも低くなります。これは、フレームが互いにそれほど異ならないという事実によるものです。全体の時間的動きは増加しないことに注意してください。最終的に、オブジェクトはポイントAからBに移動するため、その動きベクトルは1秒あたりのフレーム数に関係なく同じ長さになります。

エンコーダーは2つ(またはそれ以上)のフレーム間の差を探し、残差値のみをエンコードするため、画像ごとの残差を少なくコーディングする必要があります。平均すると、これは残差の半分になります。だからあなたはそれで正しいです。 (残差の半分だけがそれを格納するために必要なデータの半分を意味しないことを忘れてはなりません。それは実装されたアルゴリズムコーディングに依存します。)

繰り返しになりますが、1秒あたりの画像数は2倍になります。つまり、平均して、エンコードされた情報は再び2倍になります。

要約すると、その側では何も変わりません。エンコーダーは、ビデオ内のすべてのモーションをエンコードするために最善の仕事をします。これは、合計すると同じです(私が何を意味するかを知っている場合は、小さなステップで)。追加する必要がある唯一のオーバーヘッドは、効率的な方法で算術的にコーディングできない小さな残差からのオーバーヘッドです。


上記は、他の人に依存するBまたはP画像にのみ適用されます。ただし、イントラコード化された画像を時々挿入する必要があります。これは他の画像に依存しません。このイントラコード化された画像の割合が増加しない場合は、ファイルサイズが線形成長、おそらくもう少し大きいと想定できます。

ただし、パケット損失やビットストリームエラーの可能性を補うためにイントラコード化された画像の距離を短くすると、オーバーヘッドが増えるため、増加は線形以上、それほどではありませんが、おそらく目立つ。

3
slhck

これは実際にはエンコーディングのタイプに依存します。ビデオをRAW形式でキャプチャする場合は、そうです。画像が増えると、線形に多くのストレージが必要になります。

キャプチャした画像を圧縮形式に直接エンコードする場合、それはすべて、そのコーデックがどのように機能するかに依存します。

ファイルサイズに関しては、それはbitrate × durationによって決定されます。したがって、フレームレートは直接関係しません。より低いフレームレートでエンコードされた同じビデオと同じ品質を実現するには、ビットレートをいくらか上げる必要があります。どれだけ(繰り返しますが)、使用しているコーデックによって異なります。

0
DanMan

また、今日この質問を自問しました。私の携帯電話とカメラでは、60fpsのビデオは30fpsのビデオのほぼ2倍のサイズです。おそらく、スマート圧縮に十分な処理能力がなく、フレームレートを2倍にして安全を確保できるためです。

ただし、オフライン圧縮を使用すると、より良い結果が得られます。たとえば、YouTubeの60 fpsビデオ、具体的にはさまざまな品質設定の背後にある実際のビデオファイルのサイズを確認できます。 youtube-dlのようなツールを使用するとそれを行うことができます。ランダムな60fpsのYoutubeビデオを使用したツールからの出力は次のとおりです。

C:\>youtube-dl -F https://www.youtube.com/watch?v=H53QmxZ-rOs
[youtube] H53QmxZ-rOs: Downloading webpage
[youtube] H53QmxZ-rOs: Downloading video info webpage
[info] Available formats for H53QmxZ-rOs:
format code  extension  resolution note
249          webm       audio only tiny   62k , opus @ 50k (48000Hz), 3.23MiB
250          webm       audio only tiny   82k , opus @ 70k (48000Hz), 4.41MiB
140          m4a        audio only tiny  130k , m4a_dash container, mp4a.40.2@128k (44100Hz), 8.18MiB
251          webm       audio only tiny  158k , opus @160k (48000Hz), 8.41MiB
278          webm       256x144    144p   97k , webm container, vp9, 30fps, video only, 5.11MiB
160          mp4        256x144    144p  113k , avc1.4d400c, 30fps, video only, 3.69MiB
242          webm       426x240    240p  228k , vp9, 30fps, video only, 8.69MiB
133          mp4        426x240    240p  281k , avc1.4d4015, 30fps, video only, 7.95MiB
243          webm       640x360    360p  509k , vp9, 30fps, video only, 15.81MiB
134          mp4        640x360    360p  582k , avc1.4d401e, 30fps, video only, 14.79MiB
244          webm       854x480    480p  771k , vp9, 30fps, video only, 26.80MiB
135          mp4        854x480    480p  992k , avc1.4d401f, 30fps, video only, 20.65MiB
247          webm       1280x720   720p 1555k , vp9, 30fps, video only, 52.89MiB
302          webm       1280x720   720p60 2853k , vp9, 60fps, video only, 79.52MiB
248          webm       1920x1080  1080p 2944k , vp9, 30fps, video only, 94.03MiB
298          mp4        1280x720   720p60 3094k , avc1.4d4020, 60fps, video only, 38.61MiB
303          webm       1920x1080  1080p60 4898k , vp9, 60fps, video only, 142.73MiB
136          mp4        1280x720   720p 4910k , avc1.4d401f, 30fps, video only, 62.89MiB
299          mp4        1920x1080  1080p60 5785k , avc1.64002a, 60fps, video only, 123.69MiB
137          mp4        1920x1080  1080p 6930k , avc1.640028, 30fps, video only, 111.05MiB
43           webm       640x360    360p , vp8.0, vorbis@128k, 43.91MiB
18           mp4        640x360    360p  501k , avc1.42001E, mp4a.40.2@ 96k (44100Hz), 31.66MiB
22           mp4        1280x720   720p 1125k , avc1.64001F, mp4a.40.2@192k (44100Hz) (best)

このビデオの場合、av1で圧縮すると、60fpsのFHDビデオは30fpsのFHDビデオと比較してわずか10%大きくなります。しかし、vp9で圧縮すると、ファイルサイズの違いはなんと60%になります。

したがって、60 fpsのビデオは最大で2倍の大きさになることがあると思いますが、フレームレートを2倍にして、ほぼ同じファイルサイズにする方法があります。これはかなりきれいです。

0
evilkos