使用FFmpeg+Nginx+VideoJS将摄像头rtsp流转码成rtmp流并播放

工具介绍

FFmpeg: FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。github地址:https://github.com/FFmpeg/FFmpeg

Nginx: Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。

nginx-rtmp 是由俄罗斯人开发的 NGINX 模块,该模块完善了 NGINX 对视频的支持,并且实现了对 HLS 的支持。

VideoJSVideo.js 是一个通用的在网页上嵌入视频播放器的 JS 库,Video.js 自动检测浏览器对 HTML5 的支持情况,如果不支持 HTML5 则自动使用 Flash 播放器。

 

转流步骤

摄像头IP Camera输出的视频流一般为rtsp流, 系统播放需要先将rtsp流转为rtmp流.

转流可以使用ffmpeg程序, 将摄像头rtsp流转为rtmp流, 推送给nginx-rtmp服务器, 发布出来.

1.启动nginx-rtmp服务器

使用FFmpeg+Nginx+VideoJS将摄像头rtsp流转码成rtmp流并播放

双击启动nginx.exe, 服务器窗口会一闪而过, 此时查看任务管理器, 如果有两个nginx进程在运行, 则说明启动成功

使用FFmpeg+Nginx+VideoJS将摄像头rtsp流转码成rtmp流并播放

 

2.使用FFmpeg转流, 并推送给nginx

win+r打开cmd窗口, 进入FFmpeg服务器所在的目录, 使用如下命令将本地摄像头的rtsp码流转成rtmp码流, 并推送给nginx

ffmpeg -i "rtsp://admin:root123456@10.10.2.74:554/h264/ch1/main/av_stream" -vcodec copy -an -f flv "rtmp://127.0.0.1:1935/live/test"

其中rtsp://admin:root123456@10.10.2.74:554/h264/ch1/main/av_stream为本地摄像头的码流地址, rtmp://127.0.0.1:1935/live/test是nginx推送rtmp的地址(具体端口可以在nginx.conf中修改)

使用FFmpeg+Nginx+VideoJS将摄像头rtsp流转码成rtmp流并播放

此时rtsp流就通过FFmpeg转码, 并通过nginx服务器发布出来了

 

3.使用VideoJS播放rtmp视频流

3.1.在web工程中导入VideoJS项目

使用FFmpeg+Nginx+VideoJS将摄像头rtsp流转码成rtmp流并播放

3.2.配置rtmp地址到VideoJS

<!DOCTYPE html>
<html lang="en">
 
    <head>
        <meta charset="UTF-8">
        <title>Test</title>
        <script src="js/video-js-5.19.2/video.js"></script>
        <link type="text/css" rel="stylesheet" href="js/video-js-5.19.2/video-js.css" />
        <!--<script>
            videojs.options.flash.swf = "video-js.swf";
        </script>-->
    </head>
 
    <body>
        <video id="example_video_1" class="video-js vjs-default-skin" controls preload="none" width="640" height="480" data-setup="{}">
            <source src="rtmp://127.0.0.1:1935/live/test" type="rtmp/flv" />
            <!--<source src="http://localhost:10080/hls/ipc1/ipc1.m3u8" />-->
        </video>
 
    </body>
 
</html>

3.3.运行播放

如果chrome浏览器无法播放, 则设置启用flash控件

使用FFmpeg+Nginx+VideoJS将摄像头rtsp流转码成rtmp流并播放

3.4.播放效果

使用FFmpeg+Nginx+VideoJS将摄像头rtsp流转码成rtmp流并播放

到此, 摄像头rtsp流通过FFmpeg成功转成了rtmp流并在nginx中发布, 并在video.js中播放

 

测试工程包地址

https://download.csdn.net/download/liu844133828/11175176

上一篇:Qt编写的项目作品28-RTSP播放器+视频监控(mpv版本)


下一篇:使用ffserver实现本地视频以rtsp视频流访问