由于项目要求,需要对摄像机的rtsp流进行截图。一开始我使用了命令:
./ffmpeg -ss 0 -i XXX -f image2 -vframes 1 -s 370*210 -y output.jpg
上述命令抓取rtsp流第0秒(当前)的图像,将其保存为370*210分辨率的jpg图片。经过测试,发现该命令可以成功截图。但在复杂的网络环境(学校局域网)下,截图速度较慢,截取出来的图片花屏率较高。
推测截图的速度较慢是因为加了-ss参数,会有个跳转的过程导致。截取出来的图片花屏率较高是因为没有加-rtsp_transport 参数,所以默认rtsp里面的rtp包传输用的是udp,udp会丢包导致。
所以将截图命令改成:
./ffmpeg -f rtsp -rtsp_transport tcp -i XXX -vframes 1 -s 370*210 -y output.jpg
修改后发现截图的速度上升,花屏率下降了
参考:《ffmpeg获取视频截图》