背景: 因一个项目的需要,现有海康摄像头的rtsp流地址,想在web端进行监控视频直播展示,由于实际环境限制,自行搭建流媒体服务器将其转换为更为通用的rtmp流格式的方案无法落地;故最终仍使用rtsp流在web端展示,只是仅限于360浏览器;
在调研测试过程中同时验证了一种常用转rtmp流的方式;只是作为开发的一个简单尝试;
一、html页面的展示
- 确保拿到用来测试的rtsp视频流地址正确可用;
初始我拿到的是海康提供的浏览媒体服务器(177.6.24.15)给出的rtsp的地址;
和网上常见设备本地url不同,类似: rtsp://177.6.24.15:554/pred://192.168.1.106:8000:0:0?us=admin&pass=12345&key=ASASA
为验证url正确可用,专门下载安装了播放器vlc-3.0.7-win32.exe
将拿到的url在vlc中配置并进行播放,若能正常看到实时视频就说明地址OK. - 编写简易的测试html,这里使用vlc-plugin,需要提前安装vlc播放器(如前),其中的mrl对应value值,替换为有效url
二、使用ffmpeg将rtsp转为rtmp流并使用nginx作为流媒体服务器
- windows环境中下载ffmpeg-latest-win64-shared.zip,并进行解压;
解压后的bin目录中包含ffmpeg.exe命令 - 搭建nginx流媒体服务器,对于rtmp视频流,这里nginx需要添加并配置RTMP模块;
linux下的可自行百度安装;windows下的配置了RTMP的nginx, 这里直接搜索下载了一个整合后的nginx;
nginx.conf配置文件中添加了rtmp协议的配置 :
rtmp {
server {
listen 1988;
application live {
live on;
}
application hls {
live on;
hls on;
hls_path temp/hls;
hls_fragment 8s;
}
}
}
启动此nginx,以本机地址localhost为例:此提供的rtmp流服务地址为: rtmp://localhost:1988/live/xxx
3. cmd命令行下进入第1步bin目录中:
运行如下命令:
ffmpeg.exe -i "rtsp://129.158.165.4:554/pag://66.13.68.40:7302:C839762541320017274:0:MAIN:TCP?streamform=rtp&checkinfo=ewogICAidGltZSIgOiAiMjAxOTA2MTRUMDI0NTM5WiIsCiAgICJ1cmwiIDogInJ0c3A6Ly8xMjQuMTE4LjE2NS40OjU1NC9wYWc6Ly82Ni4xMy42OCwe0MDo3MzAyOkM4Mzk3NjI1NDEzMjAwMTcyNzQ6MDpNQUlOOlRDUD9zdHJlYW1mb3JtPXJ0cCIKfQo%3D&idinfo=EAAAAAAQAAAWeifwRJ90e3gkMtTUusZm%2B5SCwnBnNsMv3MRVoCrnHOxHbG9htsOXx9XhlMgv5WRQ%3D" -f flv -r 25 -s 640x360 -an rtmp://localhost:1988/live/v1
如上命令,推流有两种方式UDP和TCP的方式,系统默认是UDP,所以推送的过程中出现ERROR encoding这种类似的错误;或直接报错命令获取流数据失败等。
后改为如下,明确使用tcp方式,此时推送等一切正常;
ffmpeg.exe -re -rtsp_transport tcp -i “rtsp://129.158.165.4:554/pag://66.13.68.40:7302:C839762541320017274:0:MAIN:TCP?streamform=rtp&checkinfo=ewogICAidGltZSIgOiAiMjAxOTA2MTRUMDI0NTM5WiIsCiAgICJ1cmwiIDogInJ0c3A6Ly8xMjQuMTE4LjE2NS40OjU1NC9wYWc6Ly82Ni4xMy42OCwe0MDo3MzAyOkM4Mzk3NjI1NDEzMjAwMTcyNzQ6MDpNQUlOOlRDUD9zdHJlYW1mb3JtPXJ0cCIKfQo%3D&idinfo=EAAAAAAQAAAWeifwRJ90e3gkMtTUusZm%2B5SCwnBnNsMv3MRVoCrnHOxHbG9htsOXx9XhlMgv5WRQ%3D” -f flv -r 25 -s 640x360 -an rtmp://localhost:1988/live/v1
- 此时使用vlc播放器配置rtmp://localhost:1988/live/v1亦可正常播放视频,前面所述的html也可使用。
- 若有另外一个rtsp流地址,可新开cmd命令窗口,同样执行上述命令,但此时本地nginx流地址处改为:rtmp://localhost:1988/live/v2 即可,展示方式相同;
————————————————
版权声明:本文为CSDN博主「林星语」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liuchunlin2008/article/details/94494408