Постоянно сохраняйте поток RTSP в несколько файлов mp4 определенной длины (10 минут) в ffmpeg - PullRequest
0 голосов
/ 03 июня 2019

Я записываю поток RTSP с камеры в .mp4 файлы, используя ffmpeg, и хочу свернуть его в несколько файлов по 10 минут на каждое видео.

В настоящее время у меня есть решение для этого: я устанавливаю промежуток времени '00: 10: 00 ', после того, как он закончится, я перезапущу приведенную ниже команду с новым процессом. Образец:

ffmpeg -rtsp_transport tcp -i <rtsp_url> -acodec copy -vcodec  copy  -t 00:10:00 D:\video_test.mp4

Но это решение делает камеру нестабильной, поток RTSP, как правило, искажается из-за этой ошибки:

rtsp://10.96.41.14:9024/user=xxxx_password=xxx_channel=1_stream=0.sdp?real_stream: Operation not permitted

Я хочу найти лучшее решение для постоянного подключения к потоку RTSP (не создавать новый процесс с флагом -t).

У кого-нибудь есть идея продолжать непрерывную запись потока? Спасибо

Ответы [ 2 ]

0 голосов
/ 18 июля 2019

Я хочу расширить ответ от @Gyan в качестве моего решения, которое я использую.

В моем случае я хочу сегментировать поток в обычные видео (это может быть воспроизведение), и видео начинается с 0 минут каждый час часов.Поэтому я использую опции reset_timestamps и segment_atclocktime.

Ниже приведена моя полная команда ffmpeg:

ffmpeg -rtsp_transport tcp -i <rtsp_url> -f segment -strftime 1 -segment_time 00:10:00 -segment_atclocktime 1 -segment_clocktime_offset 30 -segment_format mp4 -an -vcodec copy -reset_timestamps 1 record_%Y-%m-%d-%H.%M.%S.mp4
0 голосов
/ 03 июня 2019

FFmpeg имеет мультиплексор , который вы можете использовать для этого.

Базовая форма

ffmpeg -rtsp_transport tcp -i <rtsp_url> -c copy -f segment -segment_time 600 stream_piece_%d.mp4

Обратите внимание, что мультиплексор сегмента разделяется на ключевых кадрах, поэтому, вероятно, будут небольшие отклонения в полученной длительности сегмента.

...