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

Как сбрасывать поток RTSP в файл?

Можно ли выгрузить необработанный поток RTSP в файл, а затем позже декодировать файл на что-нибудь воспроизводимое?

В настоящее время я использую FFmpeg для приема и декодирования потока, сохраняя его в файле mp4. Это отлично работает, но интенсивно работает в ЦП и сильно ограничивает количество потоков RTSP, которые я могу получать одновременно на моем сервере.

Я хотел бы сохранить поток в файл без его декодирования и задержать часть декодирования, когда файл нужно открыть.

Возможно ли это?

Я пробовал VLC, который даже больше интенсивнее процессора, чем FFmpeg. Я также рассмотрел этот вопрос, где ответ говорит, что загрузка RTSP в файл не полезна, и этот вопрос, где в комментарии ниже вопроса говорится, что "Raw RTSP-контент не очень подходит для сохранения и воспроизведения...", что, как представляется, указывает на то, что есть способ.

Спасибо заранее!


ИЗМЕНИТЬ Вот команда, которую я использую для FFmpeg:

ffmpeg -i rtsp://@192.168.241.1:62159 -r 15 C:/DB_Videos/2013-04-30 17_18_34.703.mp4

4b9b3361

Ответ 1

Если вы перекодируете в свою командную строку ffmpeg, это может быть причиной того, что это интенсивность процессора. Вам нужно просто скопировать потоки в один контейнер. Поскольку у меня нет вашей командной строки, я не могу предложить здесь конкретного улучшения. Ваши acodec и vcodec должны быть скопированы, это все, что я могу сказать.

РЕДАКТИРОВАТЬ: При просмотре вашей командной строки и при условии, что вы уже пробовали это, это полезно для других, которые сталкиваются с одним и тем же вопросом. Команда:

ffmpeg -i rtsp://@192.168.241.1:62156 -acodec copy -vcodec copy c:/abc.mp4

не будет транскодировать и выгрузить файл для вас в mp4. Конечно, предполагается, что потоковое содержимое совместимо с mp4 (что, по всей вероятности, есть).

Ответ 2

С помощью этой команды у меня было плохое качество изображения

ffmpeg -i rtsp://192.168.XXX.XXX:554/live.sdp -vcodec copy -acodec copy -f mp4 -y MyVideoFFmpeg.mp4

С этим, почти без задержки, я получил хорошее качество изображения.

ffmpeg -i rtsp://192.168.XXX.XXX:554/live.sdp -b 900k -vcodec copy -r 60 -y MyVdeoFFmpeg.avi

Ответ 3

Вы можете использовать mplayer.

mencoder -nocache -rtsp-stream-over-tcp rtsp://192.168.XXX.XXX/test.sdp -oac copy -ovc copy -o test.avi

Копик "копия" - это просто тупая копия потока. Mencoder добавляет заголовок и прочее, которое вы, вероятно, захотите.

В исходном файле mplayer "stream/stream_rtsp.c" задано значение prebuffer_size, равное 640k, и никакой опции для изменения другого размера, а затем перекомпиляции. В результате запись потока всегда задерживается, что может раздражать такие вещи, как камеры, но помимо этого вы получаете выходной файл и можете воспроизводить его в большинстве мест без проблем.