3

ブラウザでビデオを再生するために、メディア ソース拡張機能を使用しています。

私の JavaScript プログラムは、ビデオ ファイルを 1200 バイトのフラグメントに分割します。ビデオは次のコーデックでエンコードされます: video/mp4; codecs="avc1.42E01E, mp4a.40.2".
秒単位で時間 X を指定すると、位置 X でビデオを再生するために必要な対応する最初のフラグメント (または、この位置の近くではあるが後ではないフラグメント) を見つけたいと考えています。より具体的には、HTMLMediaElement の currentTime プロパティの時間に属するフラグメントを見つけたいと考えています。動画ファイルは事前に解析できます。

4

1 に答える 1

5

mp4 ファイルでデュレーション -> フラグメント マッピングを指定する方法は多数あります。

  • ISO/IEC 14496-12 で定義されているsubsegment index(sidx略して) ボックスは、入力ファイルのバイト範囲を対応する期間に関連付けます。

以下は、sidx ボックスの内容の抜粋です。

subsegment 0 size 726463 dur 450450
subsegment 1 size 723260 dur 450450
subsegment 2 size 713278 dur 450450
subsegment 3 size 441644 dur 450450
... and so on ...

特定の時間のフラグメントを見つけるのXは簡単です。

  • ほとんどのmp4ファイルにはsidxボックスがなく、一連のサンプル (ビデオまたはオーディオ フレーム) をデュレーション + サイズにマップするstszおよびボックスがあります。sttsここに例があります:

stsz ボックス:

sample 0 size 105222
sample 1 size 1554
sample 2 size 2153

stts ボックス:

3 sample each with dur 512

sttsボックスは、stsz で定義されたサンプルの期間を示します

  • 他の方法があるかもしれません。このリストはすべてを網羅しているわけではありません
于 2016-02-11T15:38:23.890 に答える