ストリームを1つのMP4ファイルに多重化するには、マルチプレクサ(Haali、GDCL、mp4v2ライブラリのラッパー、Media Foundationシンクなど)ソースはトラックとして書き出されます。
フィルタグラフクロックは関係ありません。クロックはプレゼンテーションのためのもので、ファイルライターは受信データを受け入れ、できるだけ早く書き込みます。すでに行っているように、時計を削除する方が正確ですが、標準時計を持っていることは違いはありません。
データは、個々のメディアサンプル、メディアストリームの一部のタイムスタンプを使用して同期されます。マルチプレクサは、すべてのストリームの内部キューを構築し、元のストリームデータがインターリーブされるような方法で、単一のファイルを構築するためにストリームからデータを消費します。一方のストリームがあまりにも多くのデータを供給している場合、すなわち、別のストリームがデータをゆっくりと供給している間にデータが早すぎる場合、マルチプレクサは、この特定のストリームに対するさらなるデータ受信を、それぞれの処理コール(IPin::Receive
)ストリームは追加入力を提供します。最終的に、異なるストリームからのデータのマッチングがデータタイムスタンプであるときに、どのマルチプレクサが調べるか。
結果のMP4ファイルで同期データを取得するには、ペイロードデータにタイムスタンプが正しく設定されていることを確認する必要があります。マルチプレクサは残りの部分を処理します。
これは、タイムスタンプがストリーム内で単調に増加し、キーフレーム/スプライスポイントがそれぞれ示されることも含みます。それ以外の場合、マルチプレクサによっては直ちにエラーが発生し、他のものは出力ファイルを生成しますが、再生の問題が発生する可能性があります(特にシーク)。
ストリームを同期トラックとして使用する単一のMP4が必要ですか?またはMP4を別にする? @ RomanR。 –
シングルmp4の場合、2つのストリームは1つのビデオと1つのオーディオが一緒に多重化されています。現時点ではクロックがありません(または、graphstudionextのように表示されます)。 – gbjbaanb