2012-07-26 2 views
1

비슷한 질문을 받았지만 특정 문제에 대한 답변을 찾을 수 없었습니다.Android에서 VLC로 스트리밍

Android 카메라에서 VLC Player 클라이언트로 RTSP/RTP 비디오 스트림을 만들려고합니다. 작은 RTSP 서버를 작성하여 모든 설정을 처리하고 VLC가 내 매개 변수를 좋아하는 것 같습니다. 그러나 PLAY 명령이 실행되고 My app이 (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- 

에서 내가 볼 로그입니다. . [Snip] . .

[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는 안드로이드 장치 포트 1236에서 수신 대기해야하지만 패킷을 볼 수 없으므로 수신 대기 위치를 알 수 없습니다. 이게 옳은지 말해 줄 수 있니?

답변

1

이 문제는 안드로이드 장치 포트 1236 대신 클라이언트 장치 포트 1236 그래서

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

서버를 명시되어 내용의 SETUP 명령의 전송 파라미터 (안드로이드 휴대 전화에 내 패킷을 기록했다 밖으로 찾을 수)는 서버 포트 1238에서 클라이언트 장치 포트 1236으로 RTP 패킷을 보냅니다. 마찬가지로 RTCP 통신은 서버 포트 1239와 클라이언트 장치 포트 1237 사이에서 발생합니다.

0

세션을 확인하지 않으셨습니까? 패킷에 포트 1236이 포함되어 있습니까? FakeClass에 VLC로 데이터를 보내야하는 모든 기능을 포함 할 수 있습니까?

관련 문제