3

If I run ffprobe -timeout 20 -v trace -print_format json -show_format -show_streams 'http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_2mb.mp4', the command fails immediately with a Connection timed out error even though I set the timeout to 20 seconds. It doesn't wait anywhere near 20 seconds, just exits right away with an exit code of 1. Here's the trace output.

ffprobe version 3.2.2 Copyright (c) 2007-2016 the FFmpeg developers
  built with gcc 6.2.1 (GCC) 20160830
  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-avisynth --enable-avresample --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libass --enable-libbluray --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-netcdf --enable-shared --enable-version3 --enable-x11grab
  libavutil      55. 34.100 / 55. 34.100
  libavcodec     57. 64.101 / 57. 64.101
  libavformat    57. 56.100 / 57. 56.100
  libavdevice    57.  1.100 / 57.  1.100
  libavfilter     6. 65.100 /  6. 65.100
  libavresample   3.  1.  0 /  3.  1.  0
  libswscale      4.  2.100 /  4.  2.100
  libswresample   2.  3.100 /  2.  3.100
  libpostproc    54.  1.100 / 54.  1.100
{
[http @ 0x5598e7df1e20] Setting default whitelist 'http,https,tls,rtp,tcp,udp,crypto,httpproxy'
[http @ 0x5598e7df1e20] request: GET /video/mp4/720/big_buck_bunny_720p_2mb.mp4 HTTP/1.1
User-Agent: Lavf/57.56.100
Accept: */*
Range: bytes=0-
Connection: close
Host: www.sample-videos.com
Icy-MetaData: 1


http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_2mb.mp4: Connection timed out

}

If I remove the -timeout 20 flag the command works fine. How can I get ffprobe to work with timeouts?

user779159
  • 9,034
  • 14
  • 59
  • 89

2 Answers2

9

The unit of -timeout are different in each protocol.

In HTTP, the unit is microseconds.

lqs
  • 1,434
  • 11
  • 20
  • 1
    rtsp timeout doesn't work as it should. setting timeout to any positive value causes a not found message, regardless of whether the rtsp stream is able to be connected to or not. – SomeGuy Apr 22 '18 at 06:25
  • I can't find `timeout` in the [http section of the documentation](https://ffmpeg.org/ffmpeg-protocols.html#http). – drake7 Sep 08 '21 at 06:22
  • I found the `timeout` option here: PROTOCOLS: ftp, rtmp, smb, ssh/sftp, rtp, rtsp, srt, tcp, udp, Unix local socket | FORMATS: dash, hls – drake7 Sep 08 '21 at 09:57
1

I have resolve the problem for rtsp streaming by adding the option

   -stimeout 8000 // in microseconds

See documentation for more info http://ffmpeg.org/ffmpeg-protocols.html#rtsp

Fatemeh Karimi
  • 914
  • 2
  • 16
  • 23
Haris
  • 13,645
  • 12
  • 90
  • 121