1

VoIP Android アプリケーションで Android SipDroid RTP パケット クラスを使用しています。キャプチャしたフレームを小さなパケットにフラグメント化しています。seqno、タイムスタンプ、マーカーを設定しました。しかし、ログ RTP パケット マーカーを見ると、 hasMarker 関数は常に false を返します。true に設定しても false しか返されません。完全なフレームを再構成するのは非常に難しいため、一時的に、それぞれのタイムスタンプの最後のパケットである 1024 未満のパケット サイズに基づいてパケットを再構成します。

解決策はありますか?

4

1 に答える 1

1

マーカーの使用は、ストリームのタイプによって異なります。ほとんどのオーディオ ストリームでは、Marker はストリームの不連続性 (つまり、オーディオ パケットの「スパート」の最初のパケット) を示します。ビデオ コーデックの場合、通常はフレームの最後のパケットを意味しますが、ほとんどのコーデックでは、これは次のパケットで変化するタイムスタンプによっても推測できます。ただし、フレーム境界でのパケット損失はそのヒューリスティックを混乱させる可能性があるため、マーカーが役立ちます。(一部のコーデック (H.264) は、内部の明示的なフラグメント終了パケット化マーカーを使用するため、マーカーはほとんど無関係になります。)

消えている理由については、コードと使用しているライブラリをデバッグする必要があり、おそらく tcpdumps/wireshark キャプチャも確認する必要があります。

于 2011-04-29T15:35:45.243 に答える