LennyKrost la segmentazione la può fare ffmpeg durante la registrazione, e il container non ha importanza perché ffmpeg chiude semplicemente il file dopo X secondi e ne apre un altro. Ad esempio così:
ffmpeg -i rtsp://ecc -c copy -f segment -segment_time 600 -segment_format mp4 "output-%04d.mp4"
I file in uscita sono MP4 di max 10 minuti ciascuno. Come codec viene mantenuto quello trasmesso dalla videocamera (-c copy
), che se è H.264 non ci sono problemi di compatibilità.
Se c'è la necessità di ricodifica/compressione, questo è un caso in cui è adatta la codifica x264 CRF (a qualità costante e bitrate variabile):
ffmpeg -i rtsp://ecc -crf 23 -c:a copy -f segment -segment_time 600 -segment_format mp4 "output-%04d.mp4"
Se il file è troppo grande si può alzare il valore CRF e vedere fino a che punto la qualità è accettabile (fino a 27-30 la qualità è ancora ok). Un valore più alto sacrifica la qualità ottenendo un bitrate medio più basso, un CRF più l'opposto. Il default è 23, mentre sotto il 18 la qualità è considerata "placebo".
Per ricodificare anche l'audio (molte IP cam trasmettono audio PCM, che non è il massimo) basta togliere -c:a copy
e di default ricodifica in aac.