1

同様の質問が寄せられていることは知っていますが、特定の問題に対する答えを見つけることができませんでした。

Android カメラから VLC Player クライアントへの RTSP/RTP ビデオ ストリームを作成しようとしています。すべてのセットアップを処理する小さな RTSP サーバーを作成しましたが、VLC は私のパラメーターを気に入っているようです。ただし、PLAY コマンドが発行され、My アプリが (DatagramPackets を介して) ビデオ ストリームの送信を開始した後、VLC プレーヤーはデータを受信しません。

私は jlibrtp ライブラリを使用しており、このようにストリームをセットアップしています

    sendSoc = new DatagramSocket(1238);
    recSoc = new DatagramSocket(1239);
    sess = new RTPSession(sendSoc, recSoc);
    FakeClass fc = new FakeClass(); //This implements the RTPAppIntf but all the functions are empty
    sess.RTPSessionRegister(fc, null, null);
    sess.payloadType(96);
    Participant p = new Participant("localhost",1236,1237);
    sess.addParticipant(p);

これはVLCプレーヤーから見たログです

Opening connection to 192.168.1.221, port 1234...
[0xb1003790] main art finder debug: no art finder module matching "any" could be loaded
[0xb1003790] main art finder debug: TIMER module_need() : 6.331 ms - Total 6.331 ms / 1 intvls (Avg 6.331 ms)
[0x9f653e0] main playlist debug: art not found for rtsp://192.168.1.221:1234
...remote connection opened
Sending request: OPTIONS rtsp://192.168.1.221:1234 RTSP/1.0
CSeq: 2
User-Agent: LibVLC/2.0.1 (LIVE555 Streaming Media v2011.12.23)


Received 76 new bytes of response data.
Received a complete OPTIONS response:
RTSP/1.0 200 OK
CSeq: 2
Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE


Sending request: DESCRIBE rtsp://192.168.1.221:1234 RTSP/1.0
CSeq: 3
User-Agent: LibVLC/2.0.1 (LIVE555 Streaming Media v2011.12.23)
Accept: application/sdp


Received 240 new bytes of response data.
Received a complete DESCRIBE response:
RTSP/1.0 200 OK
CSeq: 3
Content-Type: application/sdp

v=0
o=- 1343306778867 1343306778867 IN IP4 192.168.1.221
s=Droid Stream
i=Live Stream from Android Camera
t=1343306778873 0
m=video 1236/2 RTP/AVP 96
a=rtpmap:96 H264/9000


[0xb0101190] live555 demux debug: RTP subsession 'video/H264'
Sending request: SETUP rtsp://192.168.1.221:1234/ RTSP/1.0
CSeq: 4
User-Agent: LibVLC/2.0.1 (LIVE555 Streaming Media v2011.12.23)
Transport: RTP/AVP;unicast;client_port=1236-1237


Received 128 new bytes of response data.
Received a complete SETUP response:
RTSP/1.0 200 OK
CSeq: 4
Session: 1343306779273
Transport: RTP/AVP/UDP;unicast;client_port=1236-1237;server_port=1238-1239


[0xb5203c18] main input debug: selecting program id=0
[0xb0101190] live555 demux debug: setup start: 0.000000 stop:0.000000
Sending request: PLAY rtsp://192.168.1.221:1234 RTSP/1.0
CSeq: 5
User-Agent: LibVLC/2.0.1 (LIVE555 Streaming Media v2011.12.23)
Session: 1343306779273
Range: npt=0.000-


Received 71 new bytes of response data.
Received a complete PLAY response:
RTSP/1.0 200 OK
CSeq: 5
Session: 1343306779273
Range: npt=0.000-

. . [をちょきちょきと切る] 。.

[0xb5203c18] main input debug: `rtsp://192.168.1.221:1234' successfully opened
[0xb0101190] live555 demux warning: no data received in 10s. Switching to TCP
Sending request: TEARDOWN rtsp://192.168.1.221:1234 RTSP/1.0
CSeq: 6
User-Agent: LibVLC/2.0.1 (LIVE555 Streaming Media v2011.12.23)
Session: 1343306779273

だから、何が悪いのかわからない。VLC は Android デバイスのポート 1236 でリッスンする必要がありますが、パケットが表示されないため、どこでリッスンしているかわかりません。これが正しいかどうか教えてもらえますか?

4

2 に答える 2

1

クライアント デバイスのポート 1236 ではなく、Android デバイスのポート 1236 にパケットを書き込んでいることが問題であることがわかりました。

Transport: RTP/AVP/UDP;unicast;client_port=1236-1237;server_port=1238-1239

サーバー (Android フォン) が RTP パケットをサーバー ポート 1238 からクライアント デバイス ポート 1236 に送信することを示しています。同様に、RTCP 通信はサーバー ポート 1239 とクライアント デバイス ポート 1237 の間で行われます。

于 2012-07-27T14:13:45.673 に答える
0

セッションを確認しようとしませんでしたか?ポート 1236 のパケットが含まれていますか? VLC にデータを送信する必要がある関数を FakeClass に含める必要がある可能性はありますか?

于 2012-07-27T10:44:50.217 に答える