Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Force FFMPEG to use TCP protocol when reading a RTSP Stream

Tags:

tcp

ffmpeg

rtsp

I'm running ffmpeg (Windows 7, 64bit) from command line to get a frame from a RTSP stream (second channel from my DVR):

ffmpeg  -i "rtsp://xxx.xxx.xxx.xxx:554/user=xxxx&password=xxxx&channel=2&stream=0.sdp" -rtsp_transport tcp -y video.jpg

After running, it waits for about 10 seconds and then i get:

[rtsp @ 026fd840] UDP timeout, retrying with TCP

After another long wait (2 minutes or so), i get:

[rtsp @ 028dd840] Could not find codec parameters for stream 0 (Video: h264): unspecified size

I read somewhere that I have to force using TCP, because changing from UDP to TCP will not work.

I don't understand why -rtsp_transport tcp is not working.

I'm using ffmpeg version N-62509-g97751e1 built on Apr 17 2014 22:01:31 with gcc 4.8.2 (GCC).

Please help me. Thank you.

like image 948
gary_star Avatar asked Apr 23 '14 07:04

gary_star


People also ask

Does RTSP use TCP or UDP?

RTSP uses a Transmission Control Protocol (TCP) connection for control of the streaming media session, although it is also possible to use UDP for this purpose.

Does FFmpeg support Rtmps?

ffmpeg has native support for rtmp(s). External lib (librtmp) can be used but is not necessary.

What is RTSP server?

Real Time Streaming Protocol (RTSP) is an application-level network communication system that transfers real-time data from multimedia to an endpoint device by communicating directly with the server streaming the data.


1 Answers

Just put the -rtsp_transport tcp right after ffmpeg to apply it on the input stream. Like this:

ffmpeg -rtsp_transport tcp -i "rtsp://x.x.x.x:554/user=x&password=x&channel=2&stream=0.sdp" -y video.jpg
like image 60
Fotios Basagiannis Avatar answered Sep 26 '22 00:09

Fotios Basagiannis