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