61

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

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

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

这可能吗?

我试过 VLC,它比 FFmpeg 更占用 CPU。我还查看了这个问题,其中答案说将 RTSP 转储到文件没有用,以及这个问题,问题下方的评论说“原始 RTSP 内容不太适合保存和重播......”,这似乎表示有办法。

提前致谢!


编辑 这是我用于 FFmpeg 的命令:

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

4

3 回答 3

83

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

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

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

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

于 2013-04-30T04:35:56.010 回答
14

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

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
于 2013-07-16T18:07:51.207 回答
9

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

于 2015-01-05T02:00:04.273 回答