ffmpeg & nginx 解决无法在web里播放海康rtsp流媒体的问题

通过HK摄像头本身提供的服务拿到的流播放地址是 rtsp://xxxxxx/xxx

现在问题来了: web浏览器里播放视频的插件(比如video.js等),是无法播放协议为 rtsp 的视频流的.

但是, video.js 可以播放 rtmp 的视频流.

现在解决思路就有了: 把海康摄像头的rtsp流通过某种方法转换成 rtmp协议流即可


rtsp -> rtmp -> video.js 可播放操作步骤

  1. 海康摄像头产生的是 rtsp 的流(前端video无法直接播放)
  2. 通过 ffmpeg 工具,将 rstp 转成 rtmp 的视频流并推送到 nginx.
  3. nginx 通过安装的 nginx-rtmp-module 模块,来处理 ffmpeg 推送过来的 rtmp 流,并提供对浏览器video.js 的播放支持.
转换流程

这里需要用到的nginx(包含安装好的nginx-rtmp)以及ffmpeg软件,后面都会提供下载地址.


具体操作步骤

  1. 打开nginx/conf 文件夹里的 rtmp-win-rtmp.conf 文件. 查
    看第19行. 会看到如'rtmp'节点的配置代码.

rtmp {
    server {
        listen 1935;
        # chunk_size 4000;
        application live {
             live on;
             #record off;
             #hls on;    
             #hls_path html;    
             #hls_fragment 5s;
             # record first 1K of stream
             #record all;
             #record_path /tmp/av;
             #record_max_size 1K;
 
             # append current timestamp to each flv
             #record_unique on;
 
             # publish only from localhost
             #allow publish 127.0.0.1;
             #deny publish all;
 
             #allow play all;
        }

        application hls {
            live on;
            hls on;
            hls_path temp/hls;
            hls_fragment 8s;
        }
    }
}

  1. 打开 cmd 输入 命令 进入到 nginx 的安装目录.输入以下代码,指定配置文件启动服务
启动包含了rtmp服务模块的nginx
  1. 浏览器访问: localhost:8087 如果看到下面这个页面,nginx就是启动成功了.
image.png

到目前位置就已经成功了99%了.

  1. 进入到 ffmpeg 的安装目录,并打开 cmd 命令行工具, 输入
ffmpeg -i "rtsp流路径" -vcodec copy -acodec copy -f flv "rtmp://127.0.0.1:1935/live/"

如果看到下面的这种情况

ffmpeg

说明 ffmpeg 软件已经成功的将海康摄像头的 rtsp 流转换成了 rtmp 流,并推送到了 nginx 服务上了.

  1. 最后,随便使用一个VLC软件或者video.js插件,指定 rtmp://127.0.0.1:1935/live/ 为播放流的地址即可.
image.png

demo软件git地址

你可能感兴趣的:(ffmpeg & nginx 解决无法在web里播放海康rtsp流媒体的问题)