[FFmpeg-user] Best media converter container for IPCam network streams

Giuseppe Modugno giuseppe.modugno.loqed at gmail.com
Thu Sep 14 13:33:29 EEST 2023

I have several IPCams from different manufacturers. All of them transmit 
audio/video stream through a well-known RTSP URL.

They can use different video codecs, mainly H.264 or H.265 (in some 
cases, MJPEG for low resolution streams).

Also audio codecs are different: G.711a, G.711u, AAC, G.726, MP3, PCM, 
MP2L2 and so on.

I'm trying to use ffmpeg to receive streams from those IPCams. I'm using 
segment muxer to keep always a certain number of segments in memory, 
that is what I need. I finally reached the following command line:

   ffmpeg -hide_banner -rtsp_transport tcp -stimeout 10000000 -i <rtsp 
addr> -f segment -segment_time 2 -reset_timestamps 1 -segment_wrap 11 -c 
copy %d.<output format>

ffmpeg runs on a small embedded Linux box based on iMX6ULL CPU. It isn't 
a powerful CPU, so I'd like to use "-c copy" to avoid overloading the 
CPU when transcoding 10 streams at the same time.

Now the problem is the output format to use (the muxer?).

I started with mp4, but it doesn't support G.711 and similar audio codecs.

I tried with mkv, but ffmpeg exits with error for some IPCams, because 
it couldn't find timestamps. The error is:

   [matroska @ 000001e89e880e00] Can't write packet with unknown timestamp
   av_interleaved_write_frame(): Invalid argument
   frame=    3 fps=0.0 q=-1.0 Lsize=N/A time=00:00:00.12 bitrate=N/A 
   video:56kB audio:1kB subtitle:0kB other streams:0kB global 
headers:0kB muxing overhead: unknown
   Conversion failed!

I tried to fix this error with '-fflags +genpts' and other solutions I 
found on the web, without success.

So I tried mov and it appears to work for all my IPCams, but I'm 
wondering if it will work for other IPCams I will use.

First question: could ffmpeg save the stream in a "raw" format as it is 
received from RTSP, without too much problems? I don't need to play the 
video continuously, only when I want. Only at that moment, I could use 
ffmpeg to join segments and transcode to mp4. In this case the 
transcoding is limited in time and only for short videos.

Second question: is there another media container format that could be 
better to use in my situation?

More information about the ffmpeg-user mailing list