3

ビデオ情報を取得するためにffmpegを使用しました。出力は

  Duration: 00:05:57.00, start: 0.000000, bitrate: 611 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 808x610, 609 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc

タイムベースは、フレームをデコードして表示するタイミングを計算するために使用されます(これは私の別の質問でもあります)。では、コンテナ(12800)とコーデック(50)のどちらのタイムベースが使用されますか?

もう1つの質問は、なぜtbn = 12800であり、90000ではないのかということです。

4

1 に答える 1

7

どちらも正しく、どちらも違います。

tbn は、ストリームを作成するエンコーダの関数です。したがって、10 fps ストリームの場合、90000 になる可能性があります。これは、1 秒あたり 90000 ティックであることを意味し、フレームあたり 9000 ティックを意味します。単純に 10 にすることもできます。これは、フレームごとに 1 ティックを意味します (同じ 10 fps ストリームの場合)。

90000 はストリーミング レベルで一般的に使用されますが (TS ストリーミングが思い浮かびます)、エンコーダーはこれに拘束されません。これ (tbn) は、コンテナー データを使用するアプリケーション システムではなく、デコーダーが使用するものです。

コンテナーがある場合は、コンテナーのタイム ベースとタイム スタンプを使用する必要があります。これは、コンテナー内のすべてのストリームで正規化されているためです。tbn などのパラメータは、コーデック デコーダ内でのみ使用します。

于 2012-11-29T09:40:25.293 に答える