/ / 1つのffmpegwebmダッシュストリームが他のストリームよりもはるかに大きいのはなぜですか? -ffmpeg、webm、mpeg-dash

1つのffmpeg webmダッシュストリームが他のものよりもずっと大きいのはなぜですか? - ffmpeg、webm、mpeg-dash

夏の間、私はx264ビデオ/ mp3ストリームを取得し、MSE-DASH経由で機能するように、異なるストリームに分割したスクリプト。 (の指示に大きく基づいています webmproject.orgウェブサイト)それらの同じスクリプトは機能しなくなり、6GBのビデオをいくつかの25Gbのビデオに変換します。 ffmpegのアップデートについていくので、いつ動作しなくなったのかわかりませんが、DASHWebmの実装がアップデートされた方法が原因だと思います。

私はよりうまく機能する新しい方法を見つけましたが、それでも1つのストリームで大きな問題があります。根本的な原因を理解できるように、誰かがこのエンコーディングがどのように機能するかを説明してくれることを望んでいました。

#!/bin/bash
COMMON_OPTS="-map 0:0 -an -threads 11 -cpu-used 4 -cmp chroma"
WEBM_OPTS="-f webm -c:v vp9 -keyint_min 50 -g 50 -dash 1"

ffmpeg -i $1 -vn -acodec libvorbis -ab 128k audio.webm &
ffmpeg -i $1 $COMMON_OPTS $WEBM_OPTS -b:v 500k -vf scale=1280:720 -y vid-500k.webm &
ffmpeg -i $1 $COMMON_OPTS $WEBM_OPTS -b:v 700k -vf scale=1280:720 -y vid-700k.webm &
ffmpeg -i $1 $COMMON_OPTS $WEBM_OPTS -b:v 1000k -vf scale=1280:720 -y vid-1000k.webm &
ffmpeg -i $1 $COMMON_OPTS $WEBM_OPTS -b:v 1500k -vf scale=1280:720 -y vid-1500k.webm

トランスコードはまだ完了していませんが、これがどこに向かっているのかがわかります。

-rw-r--r--  1 user  staff    87M Jan  4 23:27 audio.webm
-rw-r--r--  1 user  staff    27M Jan  4 23:42 vid-1000k.webm
-rw-r--r--  1 user  staff   285M Jan  4 23:42 vid-1500k.webm
-rw-r--r--  1 user  staff    15M Jan  4 23:42 vid-500k.webm
-rw-r--r--  1 user  staff    20M Jan  4 23:42 vid-700k.webm

1500kのバリアントは、他のストリームよりも不釣り合いに大きいです。

もう一つの問題は、私がより短いものを使うときですビデオ、たとえば8分または9分、上記の構成は期待どおりに実行され、すべてが完璧です。各テストには多くの処理能力と時間がかかるため、これの制限がどこにあるのかわかりませんが、10分未満の場合は機能し、1時間を超える場合は大量のファイルが生成されます。

回答:

回答№1は1

ビデオのビットレートをある値に制限したい場合は、 -b:v。ソース(動きが大きい、シーンの複雑さ)に応じて、実際のビットレートは高くなります。

指定する必要があります -maxrate そして -bufsize あまりにも。

つまり。約1500kに制限された可変ビットレート(VBR)ビデオを取得するには(VBVのサイズによってはピークが高くなる可能性があります)、次を使用します。

-b:v 1500k -maxrate 1500k -bufsize 1500k

固定ビットレート(CBR)の場合、単一フレームのVBVで最良の結果が得られます。 25fps(1500/25 = 60)の例:

-b:v 1500k -minrate 1500k -maxrate 1500k -bufsize 60k