背景: 因一个项目的需要,现有海康摄像头的rtsp流地址,想在web端进行监控视频直播展示,由于实际环境限制,自行搭建流媒体服务器将其转换为更为通用的rtmp流格式的方案无法落地;故最终仍使用rtsp流在web端展示,只是仅限于360浏览器;

    在调研测试过程中同时验证了一种常用转rtmp流的方式;只是作为开发的一个简单尝试;

    一、html页面的展示

    1. 确保拿到用来测试的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.
    2. 编写简易的测试html,这里使用vlc-plugin,需要提前安装vlc播放器(如前),其中的mrl对应value值,替换为有效url

    二、使用ffmpeg将rtsp转为rtmp流并使用nginx作为流媒体服务器

    1. windows环境中下载ffmpeg-latest-win64-shared.zip,并进行解压;
      解压后的bin目录中包含ffmpeg.exe命令
    2. 搭建nginx流媒体服务器,对于rtmp视频流,这里nginx需要添加并配置RTMP模块;
      linux下的可自行百度安装;windows下的配置了RTMP的nginx, 这里直接搜索下载了一个整合后的nginx;
      nginx.conf配置文件中添加了rtmp协议的配置 :

    rtmp {
    server {
    listen 1988;

    1. application live {
    2. live on;
    3. }
    4. application hls {
    5. live on;
    6. hls on;
    7. hls_path temp/hls;
    8. hls_fragment 8s;
    9. }
    10. }

    }
    启动此nginx,以本机地址localhost为例:此提供的rtmp流服务地址为: rtmp://localhost:1988/live/xxx

    1. 3. cmd命令行下进入第1bin目录中:
    2. 运行如下命令:
    3. 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
    4. 如上命令,推流有两种方式UDPTCP的方式,系统默认是UDP,所以推送的过程中出现ERROR encoding这种类似的错误;或直接报错命令获取流数据失败等。
    5. 后改为如下,明确使用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

    1. 此时使用vlc播放器配置rtmp://localhost:1988/live/v1亦可正常播放视频,前面所述的html也可使用。
    2. 若有另外一个rtsp流地址,可新开cmd命令窗口,同样执行上述命令,但此时本地nginx流地址处改为:rtmp://localhost:1988/live/v2 即可,展示方式相同;
      ————————————————
      版权声明:本文为CSDN博主「林星语」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
      原文链接:https://blog.csdn.net/liuchunlin2008/article/details/94494408