rtsp作为实时流传输的一种协议,经常用于视频监控业务,摄像头实时产生的流就是rtsp流。一般视频监控业务厂商会提供专门的客户端供客户浏览实时视频流。视频分析业务兴起后,很多业务系统(特别是GA行业),都以B/S方式提供给用户,毕竟在GA的PC中每一台上安装一个client比较麻烦。在很多应用中,GA工作人员希望通过浏览器直接查看摄像头的实时视频流,但是浏览器在无插件情况下不支持实时视频流的播放。

为实现rtsp流在前端实时播放,我们先用live555模拟一路rtsp流,然后用ffmpeg将rtsp流转化为供web播放的.m3u8格式的视频格式,最后在前端用videojs在前端html页面中播放出来。

基础环境安装

#live555安装

wget http://www.live555.com/liveMedia/public/live555-latest.tar.gz

tar xzf live555-latest.tar.gz

cd live

./genMakefiles linux-64bit

make

#live555测试

cd mediaServer

./live555MediaServer

输出如下信息说明live555安装成功。

65a68765ba42f7fe664e60054c2c59ff.png

#ffmpeg安装

yum install -y epel-release

rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

yum repolist

rpm –import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm

yum repolist

yum install -y ffmpeg

#ffmpeg测试,输出如下信息说明安装成功

ffmpeg -version

443316645a8f4fd6aa0c2d0f44483c70.png

live555模拟rtsp流

将视频文件复制到和上面live555MediaServer可执行文件的同一个目录,可用vlc在打开网络中输入地址 rtsp://IP/videoname就可以播放视频流了,rtsp流模拟完成(本例中用test.mkv视频模拟是rtsp流,生成的rtsp流地址为rtsp://IP/test.mkv,vlc中的播放效果如下)。

b505051d97b811ed35405740d7f5d210.png

ffmpeg将rtsp流转为m3u8

#本例中用如下命令将rtsp流转化为m3u8

ffmpeg -i rtsp://192.168.226.130/test.mkv -strict -2 -y ./video.m3u8

-i参数表示rtsp流地址,-y表示转化完成的m3u8格式的播放文件,具体的ffmpeg可用的参数比较多,可用用ffmpeg –help查看(参数真的很多,不信你试试)。输出如下信息,表示视频流正在实时转化。

02374a9d9a20bdd537c7aca4e829d588.png

相应会在命令启动的当前目录生成一个video.m3u8文件和大量的.ts文件(如下)。

1d76910a252092e2ffd37effa2bb0ca2.png

rtsp流为m3u8格式的过程其实是对流进行实时切片的过程,随着时间的推移,ts文件会在相应的文件夹下越积越多,并且这个过程特别消耗cpu,本例中ffmpeg的cpu占用如下。

2fbb2df8d5601b14beea7274ae7dc3a8.png

html视频流播放

#videojs播放m3u8实时视频流

d0c560ed1f1c3d19d8ca48618e3ac84e.png

#html与video.m3u8放置于同一级目录,用浏览器打开html页面测试如下(视频流播放成功)

a3e60883b061493b6709641f046e2438.png

视频流在这里有点卡顿,主要还是ffmpeg比较耗cpu,调整ffmpeg的参数或换好一点的cpu或许会好点。

本篇内容在本人个人公众号上也已发布,欢迎关注本人微信公众号“勤菜鸟”。

Ref

https://blog.csdn.net/qq_34627459/article/details/74956569

http://www.cnblogs.com/dpf-10/p/5623101.html

https://blog.csdn.net/cuishiying/article/details/78562703

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐