2012-02-08 4 views
1

私は現時点で完全なvideo-streaming機構を持っています(GDCL Mux/Demuxフィルタを除く)。構造はこのようなものです。ビデオストリームの実際の録画日時を取得する適切な方法は何ですか?

ストリーマーグラフ:

File Source Filter -> GDCL MP4 Demuxer -> My RTP Network Renderer 

レシーバーグラフ:

My RTP Network Listener -> GDCL MP4 Muxer -> My Video Renderer 

私はRTSPプロトコルを使用して、いくつかのカスタムメソッドによって必要な起動パラメータを渡すことはありません。分割されたファイルを連続してストリームします。これを行うには、ファイルの最後に達するたびに次のファイルのために新しいStreamer Graphを作成します。しかし、次のStreamer Graphに同じUDPポートを使用してください。したがって、My RTP Network Listenerは、新しいStreamer Graphが構築されて実行を開始するとすぐにリスニングしてストリームを継続します。

現時点ではRTCPのような別の通信方法は使用していません。オーディオストリーミングが不完全なので、私はまだオーディオとビデオの同期の問題はありません(まだ!)。ここで

は、重要な部分は、私が欲しいのは、ストリームから実際の記録の日付/時刻にの情報を得ることです

ています。 MP4ファイル名は日付/時刻形式です。だから、ファイルの録音がいつ始まったのか分かります。

Recording Start Date/Time Value + Media TimeStamp Value Of The Stream 

2つの録画ファイルの間にギャップがある場合はどうなりますか?新しいStreamer Graphをビルドすると、タイムスタンプは再び0からカウントされます。

ここで質問

だから来て、状況のこの種を処理するための適切な方法は何ですか?私はRTCPがオーディオビデオの同期に使用されていることを知っています。それも私の場合に使用することはできますか?または、RTCPのような2番目のUDPポートを使用してカスタムの日付/時刻情報メッセージを送信する必要がありますか?

問題を解決する複数の解決策が考えられます。しかし、いつもより適切な方法があれば、私はこのために醜い解決策を使用したくありません。

答えて

0

追加のUDPポートを使用して日付/時刻情報(4バイトのunixタイムスタンプ)を送信しました。それはうまく動作し、私のプレーヤーはタイマーを正しくカウントし、すべての日付/時刻情報が同時にビデオストリームで受信されます。私はまだ、より良い業界標準の方法があるはずだと思っていますが、誰も私の質問に答えることを決断していないので、自分の解決策を共有したいと思っていました。

Port Offset : RTP Video Stream 
Port Offset+1 : Date/Time Information (Unix TimeStamp) 

UNIXタイムスタンプ(秒)の計算:

File Recording Start DataTime + Seek Time + (Media TimeStamp/100000) 

・ホープ1:それが将来的に同様のケースを持つ人を支援します。

希望2:誰かがこの質問に答え、より良い方法をアドバイスします。

関連する問題