For my app I have to stream from a decklink card to an Android app (I must be a live stream, so either HLS or RTSP seems to be good solutions, since my app targets Android 3+).
I've tested my rtsp server with openRTSP command.
It's the UDP ports been blocked.
If accessing rtsp without -t:
-> $ openRTSP <rtsp_url>
I got log telling me:
// omit lots of lines..
Created receiver for "video/H264" subsession (client ports 63346-63347)
Sending request: SETUP rtsp://61.218.52.250:554/live/ch00_0/trackID=0 RTSP/1.0
CSeq: 4
User-Agent: openRTSP (LIVE555 Streaming Media v2013.12.16)
Transport: RTP/AVP;unicast;client_port=63346-63347
Received 47 new bytes of response data.
Received a complete SETUP response:
RTSP/1.0 461 Unsupported Transport
CSeq: 4
Failed to setup "video/H264" subsession: 461 Unsupported Transport
So changing to TCP with:
-> $ openRTSP -t <rtsp_url>
it start receiving data successfully.
// omit lots of lines..
Opened URL "rtsp://61.218.52.250:554/live/ch00_0", returning a SDP description:
v=0
o=- 1 1 IN IP4 127.0.0.1
s=Ubiquiti Live
i=UBNT Streaming Media
c=IN IP4 0.0.0.0
t=0 0
m=video 0 RTP/AVP 99
b=AS:50000
a=framerate:25
a=x-dimensions:1280,720
a=x-vendor-id:ubnt,a521
a=x-rtp-ts:4617405454576779984
a=rtpmap:99 H264/90000
a=fmtp:99 profile-level-id=42A01E;packetization-mode=1;sprop-parameter-sets=Z0IAKOkAoAt1xIAG3dAAzf5gDYgQlA==,aM4xUg==
a=control:trackID=0
Sending request: SETUP rtsp://61.218.52.250:554/live/ch00_0/trackID=0 RTSP/1.0
CSeq: 4
User-Agent: openRTSP (LIVE555 Streaming Media v2013.12.16)
Transport: RTP/AVP/TCP;unicast;interleaved=0-1
Received 107 new bytes of response data.
Received a complete SETUP response:
RTSP/1.0 200 OK
CSeq: 4
Transport: RTP/AVP/TCP;unicast;interleaved=0-1
Session: E090B5503236A1BFB7CE
Setup "video/H264" subsession (client ports 54884-54885)
Sending request: PLAY rtsp://61.218.52.250:554/live/ch00_0/ RTSP/1.0
CSeq: 5
User-Agent: openRTSP (LIVE555 Streaming Media v2013.12.16)
Session: E090B5503236A1BFB7CE
Range: npt=0.000-
Received 159 new bytes of response data.
Received a complete PLAY response:
RTSP/1.0 200 OK
CSeq: 5
Session: E090B5503236A1BFB7CE
Range: npt=now-
RTP-Info: url=rtsp://61.218.52.250:554/live/ch00_0//trackID=0;seq=41402;rtptime=0
Started playing session
Data is being streamed (signal with "kill -HUP 96432" or "kill -USR1 96432" to terminate)...
Received 47 new bytes of response data.
Received 1424 new bytes of response data.
Received 1424 new bytes of response data.
Received 1424 new bytes of response data.
Received 1424 new bytes of response data.
Received 1448 new bytes of response data.
Received 1448 new bytes of response data.
Ref to openRTSP basics.
Now I've got to figure out how to auto switch to TCP in Android.
please try the VLC:
vlc some_file.mp4 -I http --sout "#transcode{soverlay,ab=128,samplerate=44100,channels=2,acodec=mp4a,vcodec=h264,width=480,height=270,vfilter="canvas{width=480,height=270,aspect=16:9}",fps=25,vb=800,venc=x264{level=12,no-cabac,subme=20,threads=4,bframes=0,min-keyint=1,keyint=50}}:gather:rtp{mp4a-latm,sdp=rtsp://0.0.0.0:5554/stream.sdp}"
and the android code:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final VideoView vidView = (VideoView)findViewById(R.id.myVideo);
MediaController vidControl = new MediaController(this);
vidControl.setAnchorView(vidView);
vidView.setMediaController(vidControl);
vidView.setVideoPath("rtsp://137.110.92.231:5554/stream.sdp");
vidView.start();
}
Finally it was a network problem, I was connecting my devices through a MacBook WiFi sharing, and it seems that it blocked the RTSP stream. Now I am using a router and it works in RTSP (I'm still not able to receive a HTTP stream in the Android VideoView). Nevertheless, I still have a timeout issue : the RTSP stream stops after 60 sec, because the VideoView doesn't send keep alive messages. I will try to do it myself...
Use MediaPlayer it supports both HTTP and RTSP network protocols. http://developer.android.com/guide/topics/media/mediaplayer.html#mediaplayer http://developer.android.com/guide/appendix/media-formats.html#recommendations