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

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

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

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

Это возможно?

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

Заранее спасибо!


РЕДАКТИРОВАТЬ Вот команда, которую я использую для FFmpeg:

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

3 ответа

Решение

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам