强制FFMPEG在读取RTSP流时使用TCP协议

时间:2014-04-23 07:59:56

标签: tcp ffmpeg rtsp

我正在从命令行运行ffmpeg(Windows 7,64位)以从RTSP流中获取帧(来自我的DVR的第二个频道):

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

跑步后,等待大约10秒然后我得到:

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

经过漫长的等待(2分钟左右)后,我得到了:

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

我在某处读到了我必须强制使用TCP,因为从UDP更改为TCP将无法正常工作。

我不明白为什么-rtsp_transport tcp无效。

我正在使用ffmpeg version N-62509-g97751e1 built on Apr 17 2014 22:01:31 with gcc 4.8.2 (GCC)

请帮帮我。 谢谢。

1 个答案:

答案 0 :(得分:26)

只需将-rtsp_transport tcp放在ffmpeg之后,即可将其应用于输入流。像这样:

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