Подтвердить что ты не робот

Сохранение непрерывного потока RTSP до 5-10-минутных файлов mp4

Как сохранить поток (протокол rtsp, кодек h264) в файле (контейнер mp4)? То есть, при вводе бесконечного потока (с камерой видеонаблюдения) и выходных файлов в формате mp4 размером 5-10 минут времени записи.

ОС: debian, ubuntu Программное обеспечение: vlc, ffmpeg (avconv)

В настоящее время используется эта схема:

cvlc rtsp://admin:[email protected]:554/ch1-s1 --sout=file/ts:stream.ts
ffmpeg -i stream.ts -vcodec copy -f mp4 stream.mp4

Но он не может записывать видео непрерывно (между перезапусками vlc проигрывает около 10 секунд живого видео).

4b9b3361

Ответ 1

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

Функция, которую вы ищете, называется сегментацией. Ваша командная строка будет выглядеть примерно так:

avconv -i rtsp://10.2.2.19/live/ch01_0 -c copy -map 0 -f segment -segment_time 300 -segment_format mp4 "capture-%03d.mp4"

Ответ 2

Решение Alexander Garden работает на ffmpep, используя приведенную ниже версию. Замените avconv на ffmpeg.

./ffmpeg -i rtsp://10.2.2.19/live/ch01_0 -c copy -map 0 -f segment -segment_time 300 -segment_format mp4 "capture-% 03d.mp4"

Я включаю этот заголовок из-за путаницы FFmpeg над версиями, раскола ubuntu и быстрого развития.

версия ffmpeg N-80023-gd55568d Copyright (c) 2000-2016 разработчики FFmpeg   построенный с использованием gcc 4.8 (Ubuntu 4.8.4-2ubuntu1 ~ 14.04.1)   Конфигурация: --prefix =/home/rhinchley/q10/ffmpeg_build --pkg-config-flags = - static --extra-cflags = -I/home/rhinchley/q10/ffmpeg_build/include --extra-ldflags = - L/home/rhinchley/q10/ffmpeg_build/lib --bindir =/home/rhinchley/q10/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonless   libavutil 55. 24.100/55. 24.100   libavcodec 57. 42.100/57. 42.100   libavformat 57. 36.100/57. 36.100   libavdevice 57. 0.101/57. 0.101   libavfilter 6. 45.100/6. 45.100   libswscale 4. 1.100/4. 1.100   libswresample 2. 0.101/2. 0.101   libpostproc 54. 0.100/54. 0.100

Ответ 3

Командная работа: Разделите источник видео и выполните два процесса поочередно, записывая временные рамки. Вы захотите проверить, насколько переменна является временем запуска, и как она переменной. Возможно, вы захотите установить приоритет процессов в реальном времени, чтобы уменьшить дисперсию времени начала. Будет некоторое перекрытие, но похоже, что это может быть хорошо для вашего приложения из того, что я делаю. Пример:

p1: sRRRRRRRRRwwwwwwwwsRRRRRRRRRwwwwwwwwsRRRRRRRRR...
p2: wwwwwwwwwsRRRRRRRRRwwwwwwwwsRRRRRRRRRwwwwwwwww...

                    time -->

s: startup
R: running
w: wait