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

Fel*_*lix 44 ffmpeg file save rtsp

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

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

我想将流保存到文件而不解码它,并将解码部分延迟到需要打开文件的时候.

这可能吗?

我尝试过VLC,它比FFmpeg更加CPU密集.我也看了这个问题,答案说将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

av5*_*501 57

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

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

ffmpeg -i rtsp://@192.168.241.1:62156 -acodec copy -vcodec copy c:/abc.mp4
Run Code Online (Sandbox Code Playgroud)

不会在mp4中为你转码和转储文件.当然,这是假设流内容与mp4兼容(很可能是它们).

  • 哇,那太疯狂了!我的CPU使用率从7%上升到0.1%!非常感谢av501! (2认同)

小智 9

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

ffmpeg -i rtsp://192.168.XXX.XXX:554/live.sdp -vcodec copy -acodec copy -f mp4 -y MyVideoFFmpeg.mp4
Run Code Online (Sandbox Code Playgroud)

有了这个,几乎没有延迟,我得到了良好的图像质量.

ffmpeg -i rtsp://192.168.XXX.XXX:554/live.sdp -b 900k -vcodec copy -r 60 -y MyVdeoFFmpeg.avi
Run Code Online (Sandbox Code Playgroud)


Tel*_*Tel 7

你可以使用mplayer.

mencoder -nocache -rtsp-stream-over-tcp rtsp://192.168.XXX.XXX/test.sdp -oac copy -ovc copy -o test.avi
Run Code Online (Sandbox Code Playgroud)

"复制"编解码器只是流的一个愚蠢副本.Mencoder添加了一个标题和你可能想要的东西.

在mplayer源文件中,"stream/stream_rtsp.c"是prebuffer_size设置为640k,并且没有选项可以更改大小,然后重新编译.结果是写入流总是被延迟,这对于像相机这样的东西来说可能很烦人,但除此之外,你得到一个输出文件,并且可以在没有问题的情况下回放大多数地方.