Unable to save RTSP stream to file

Getting errors while saving the RTSP stream from the camera to the file.
video:331639kB audio:5199kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown

Hi Henry!

Save the RTSP (Real-Time Streaming Protocol) stream to file can be done by adjusting the buffer size used by ffmpeg.

You can do this by adding the -rtsp_transport tcp option to your command, which will cause ffmpeg to use TCP to receive the stream, rather than UDP.

This can help to improve the stability of the stream by reducing packet loss.

Another option is to use the below command:

ffmpeg -i rtsp://url_of_stream -c copy output.mp4

  • -i rtsp://url_of_stream is the input RTSP stream URL. You have to replace the url_of_stream with the actual URL of the RTSP stream you wish to save.
  • -c copy copies the audio and video streams without re-encoding, making sure fast and lossless process.
  • output.mp4 is the output file where the RTSP stream will be saved. You can specify the desired filename and extension (e.g., output.mp4 for an MP4 file).

Ensure that your system’s PATH environment variable has FFmpeg accessible and correctly installed. The RTSP stream URL you want to save should be substituted for url_of_stream, along with the desired output file name and extension.

This command will cause FFmpeg to save the RTSP stream to the designated output file. The audio and video data from the RTSP stream will be included in the output file in the same format and quality as the source stream.

Here is the detailed article written by our team member: RTSP vs RTMP

Do check more on this topic:

Another option is to use the -stimeout option to set a timeout for the initial connection to the RTSP stream. This can help to prevent ffmpeg from hanging if the initial connection to the stream takes too long.

Can you please write the sample command for more elaboration?

Sure, here it is:

ffmpeg -rtsp_transport tcp -stimeout 10000000 -reconnect 1 -i rtsp://<username>:<password>@<ip-address>/<stream> -b:v 1024k -c:v copy output.mp4

You can also try setting a higher value for the “-reconnect” option, which will cause ffmpeg to automatically reconnect to the stream if the connection is lost.

I tried but the stream is still unstable! :frowning:

Try to lower the -b option to reduce the bitrate of the output file, this can avoid congestion in the network and allow the stream to be saved stable.

You can play around with different values for these options to see which ones work best for your specific use case.

1 Like