如何将原始RTSP流转储到文件?

时间:2013-04-28 04:24:12

标签: file ffmpeg save rtsp

是否可以将原始RTSP流转储到文件中,然后将文件解码为可播放的文件?

目前我正在使用FFmpeg接收和解码流,将其保存到mp4文件。这非常有效,但是CPU密集型,并且会严重限制我可以在服务器上同时接收的RTSP流的数量。

我想将流保存到文件而不对其进行解码,并将解码部分延迟到需要打开文件的时间。

这可能吗?

我尝试过VLC,它比FFmpeg更加CPU密集。我还查看了this question,其中答案说将RTSP转储到文件是没用的,this question,问题下面的评论说“Raw RTSP内容不适合保存和重播。 ..“,这似乎表明有办法。

提前致谢!


修改 这是我用于FFmpeg的命令:

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

3 个答案:

答案 0 :(得分:52)

如果要在ffmpeg命令行中重新编码,这可能是CPU密集型的原因。您只需将流复制到单个容器即可。由于我没有您的命令行,因此我无法在此处提出具体改进建议。你的acodec和vcodec应该设置为copy我就可以说了。

编辑:看到你的命令行并且你已经尝试过它,这是为了遇到遇到同样问题的其他人的利益。命令:

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

不会进行转码并在mp4中为您转储文件。当然这是假设流内容与mp4兼容(很可能是它们)。

答案 1 :(得分:9)

使用此命令我的图像质量很差

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

答案 2 :(得分:6)

你可以使用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,没有选项可以更改大小,然后重新编译。结果是写入流总是被延迟,这对于像相机这样的东西来说可能很烦人,但除此之外,你得到一个输出文件,并且可以在大多数地方播放它而没有问题。