2011-10-20 5 views
0

RTSPソースフィルタでGDCL MP4 Muxerを使用しようとしています。グラフを停止した後で、ファイルをファイナライズしないでファイルライタを介してファイルの最後に書きます(一部の部分はmoovから始まり、時間表の値は書き込まれません)。別のRTSPソースフィルタ(ソースコードがない)を試すと、GDCL MP4 Muxerでテーブル値が作成されます。RTSPソースフィルタとGDCL MP4 Muxerの非互換性

しかし、ElecardのMP4 Muxerを試してみると、RTSPソースフィルタでうまく動作します。したがって、非互換性があります。私はGDCLのソースコードを調べましたが、私が期待していたものを見つけることができませんでした。私はすでにSetTimeメソッドを使ってサンプルにタイムスタンプ値を計算して設定します。しかし、GDCLはまだファイルを細かくしません。グラフが停止したときに情報が欠落しているか、信号が欠落していますか?どのような問題、任意のアイデアになることができますか?

+0

muxerに出力ファイルをファイナライズするためにEOS通知を送信する必要がある場合があります。 –

+0

私は同意してDeliverEndOfStream()でそれを試しましたが、うまくいきませんでした。そして、変わった部分は、 "moov"セクションが最後に作成されている(約600バイトの長さ)が、テーブル値だけが失われているということです。だから、muxerはストリーミングが終わったことを知っていますが、仕事を終わらせません。これらのテーブルはフレームのタイムスタンプ値などであるため、時間情報が不足していると考えられます。私はSetTimeを追加し、いくつかの他のmuxerが動作を開始します。私もメディアの時間を送ろうとしました。今回はGDCL mp4 muxerがストリームの先頭でクラッシュし、他のmuxerが動作しました。 –

+0

私はGDCL mp4 muxerをデバッグし、何が間違っているかを見ていきたいと思います。私は何かが明らかでないかどうか質問した。 –

答えて

2

GeraintのMP4マルチプレクサについて知っておくべきことは、着信メディアサンプルが開始時刻と終了時刻の両方をチェックしていることです。 .tStart/AM_SAMPLE_TIMEVALIDしかまだビデオには意味があるかもしれませんが、これは問題になります。

したがって、サンプルには停止時間が必要です。または、これをマルチプレクサコードで修正する必要があります。

問題の典型的な症状は、生成されたファイルが空であるか、期間がゼロであることです。