- ベストアンサー
LinuxでRTPヘッダを作りたいのですが・・・
現在、簡易IP電話を作成しています。 UDPのデータ部分にそのまま音声データを入れている感じなのですが、 できればRTPを使いたいです。 RTPヘッダをプログラミング(C言語)したいときどのように書けばよいかわかりません。なんとなくですが、構造体を使うのかなぁとは思うのですが(汗) どのようにすればいいでしょうか?? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ヘッダ記述は次の2通りが考えられます。 ・ビットフィールドを使った構造体定義 ビットフィールドを使うには実際にビットの並びを検証する必要があり ます。また開発するシステムに大きく依存しますので移植性を考えた 場合は避けるべきですが,よくソースでみかけますので使い勝手が いいようです。(ビットフィールドをインターネット検索すると 問題点が詳しく書かれてますので参考にしてみては) ・情報は通常の構造体に定義しておき,ヘッダ作成時はその構造体を参照し てビット操作を行いヘッダを作ります。 (ビット操作やビット演算子でインターネット検索すると解説があります ので参考になります) ☆一応ビットフィールドを使った構造体をRTPヘッダ風に書いてみました。 また”http://sourceforge.jp/”の「検索」で"JRTPLIB”キーに検索 すると参考になるかもしれません。 /* ビットフィールド例 (ビッグエンディアン)*/ struct stRTPHeader { unsigned char ver : 2; unsigned char padding : 1; unsigned char ext : 1; unsigned char csrcCnt : 4; unsigned char mark : 1; unsigned char payloadType: 7; unsigned short seqNumber; // 16 bit シーケンス番号 unsigned long ts; // 32 bit タイムスタンプ unsigned long ssrc; // 32 bit 同期送信元 }; /* 普通の構造体と同じようにメンバにアクセス出来ます。 */ struct stRTPHeader rtph; // 普通の構造体と同じく宣言 rtph.ver = 2; // 構造体メンバのverに2を代入
その他の回答 (1)
- goosyu
- ベストアンサー率58% (36/62)
>>UDPの上にRTPヘッダをどうやってくっつけたらいいかがわかりません(^_^;) >>すみませんが、RTPヘッダをUDPヘッダの上に乗せるやり方を教えてもらえ >>ないでしょうか?? まずUDPパケットとRTPパケットの関係を確認して下さい。 UDPパケットはUDPヘッダとデータから構成され,そのデータの中に RTPパケットは格納されます。 一度,UDP(RFC768),RTP/RTCP(RFC3550)を確認した方が良いようです。
お礼
お礼が遅れて申し訳ありませんm(_ _)m 丁寧な答えありがとうございます! UDPのデータの中に自作RTPヘッダと音声データを入たらそれっぽいのができました! ありがとうございました♪
お礼
ありがとうございます! ビットフィールドで、RTPヘッダ情報を定義することができました! ・・・のですが、UDPの上にRTPヘッダをどうやってくっつけたらいいかがわかりません(^_^;) すみませんが、RTPヘッダをUDPヘッダの上に乗せるやり方を教えてもらえないでしょうか??