h264RTPタイムスタンプ
質問
い混乱のタイムスタンプのh264RTPパケット.ピックアップしました。壁クロック率は90KHzた定義されたSIP SDP.のフレームレートのエンコーダは30FPSで可変となります。よって違うと思いますが15FPS30FPSができます。なので、利用できなくなりました。固定された時刻です。
がついて教えてタイムスタンプの符号化されたパケット.
後0milisecond符号化されたRTPタイムスタンプ=0(うのタイムスタンプ0)
後50milisecond符号化されたRTPタイムスタンプ=?
40milisecond符号化されたRTPタイムスタンプ=?
後33milisecond符号化されたRTPタイムスタンプ=?
の式の場合の符号化されたフレームレート変数?
よろしくお願いします。
正しい解決策はありません
他のヒント
あなたのエンコーダはRTPタイムスタンプを使用すると、2つのフレーム間のポーズでどのくらいの受信機に伝え、10FPSまたは30FPSでビデオをエンコードする場合、それは問題ではありません。だから、各フレームの場でそれを決定します。そうすれば、あなたは1秒(10FPS)で10枚のフレームを送信することができ、他方の第2に、あなたは30のフレーム(30fpsの)を送ることができます。あなただけ正しくRTPタイムスタンプを設定する必要があります。そして、私はあなたの質問を取得する場合、あなたはこれを行うにはどのように疑問がある...
あなたが最後のRTPタイムスタンプに100を乗じたミリ秒単位で壁時計の時間を追加し、開始タイムスタンプは0とする、またはあなたが望む任意の時間スケールを使用することができます。各パケットのRTPタイムスタンプに333000を追加し、30fpsのでデコーダのデコード10FPSの動画を作る...しかし、あなたの例を見てみましょうするには:
Frame # RTP Time Time between frames [ms]
[ 1] 0 0
[ 2] 50000 50
[ 3] 90000 40
[ 4] 420000 33
あなたはこの(Time in ms * 100000)
のようなRTPタイムスタンプを設定した場合は、デコーダの負荷とデコードフレーム1にし、その後、その前に(フレーム1とフレーム2との間の時間差)をロードし、デコードフレーム2が、それは50ミリ秒スリープしますますのでフレーム2を描く、というように...
そして、あなたが見ることができるように、デコーダは、それぞれを表示する際に知っておくRTPタイムスタンプを使用し、ビデオは30または10 fpsでエンコードされた場合、それが心をdoesntの。
ビデオが30fpsである場合、また、そのdoesntの各秒間30個のRTPパケットが存在するであろうことを意味します。あなたは正しいRTPタイムスタンプ計算を確実に式を持つことができないので、時には、もっとそして100があることができます。
私はいけない-1私をI didntは... =)
場合、私は助けを願って...これは何が必要であることを推測しますありませんの簡単な式です。
瞬間にサンプリングに使用した、フレーム前のエンコーディングと呼ばれる PTS (発表タイムスタンプ).での範囲のエンコーダの、決して忘れてはいけないと思ってデータフロー時にフレームに。
それらのライブラリの中から2つの可能性
- のH264エンコーダを発生させないB-フレーム、RTPタイムスタンプのPT+ランダムにオフセットのすべてのストリーミングセッション)
- 場合のエンコーダを生成し、Bフレーム(B-スライスし、その後のデコード順は変更する必要があり、Bフレームの次のフレームを復号化されたので、されることを確認することも重要です。
後者の場合、RFC6184るいは複数の方法をストリームの符号化されたNALます。
のストリーミングソフトウェアの利用モードとのインターリーブ"では、実オフィスにおける設定にしておく必要があRTPタイムスタンプ、PT+オフセットが送信して、解読するように順にタイムスタンプは単調増加である.このもとに顧客をデコードの受注は順番を変更フレームのPTSます。
私は使用しない期間 DTS ここに理由が必要なの復号化 タイムスタンプ この作業だけます。
最後のモードに記載のRFC6184は、いわゆるインターリーブ順序が並べ替えができますのNALます。その場合には、何らかの対策アプリケーションロジックを並べ替えについては、RFC6184ます。