nginx+rtmp配置,网页播放rtmp流(实测可用)

1、下载编译librtmp:
git clone git://git.ffmpeg.org/rtmpdump
cd rtmpdump/
make
sudo make install 

--enable-librtmp重新编译安装ffmpeg,请参考:ffmpeg导入外部库libx264


2、搭建nginx服务器:
git clone https://github.com/arut/nginx-rtmp-module
wget http://nginx.org/download/nginx-1.8.0.tar.gz
tar -xvf nginx-1.8.0.tar.gz 
cd nginx-1.8.0/
./configure --add-module=../nginx-rtmp-module --with-http_ssl_module 
make
sudo make install 

安装后,建立软链接:

ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

启动nginx:sudo nginx

测试:浏览器输入192.168.174.3:80(服务器地址:端口)

image-20210526000317993
查看端口占用情况:netstat -ano | grep "80"


3、nginx配置rtmp推流

可参考我的配置文件nginx.conf,重新启动nginx。

FFmpeg 本地视频推流测试:

ffmpeg -re -i test.mp4 -vcodec libx264 -acodec aac -f flv rtmp://127.0.0.1:1935/live/home

fflay拉流播放测试:

ffplay rtmp://192.168.174.3:1935/live/home

浏览器输入URL:rtmp://127.0.0.1:1935/live/home

然后网页会弹出窗口,让我们选择播放器进行播放。
image-20210525235913927


4、OBS直播软件推流(可以跳过)

image-20210526230225747

注:html5的video标签只支持mp4、webm、ogg三种格式,不支持flv,flash格式, flv格式是flash专用的,rtmp流为flv格式的,必须使用flash播放器,在video.js内部可以检测浏览器是否支持html5播放器直接播放,如果不支持内部会自动调用浏览器的flash播放器播放视频。

注意:网页端如果播放 rtmp 或者 flv 形式 的直播流,需要flash插件支持,由于手机web端基本无法调用flash插件,所以手机web端一般使用hls(即m3u8)的形式进行直播。


5、网页播放rtmp流

在/usr/local/nginx/html下添加一个live.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>video.js播放rtmp流</title>
        <!--引入播放器样式-->
        <link href="http://vjs.zencdn.net/5.19/video-js.min.css" rel="stylesheet">
        <!--引入播放器js-->
        <script src="http://vjs.zencdn.net/5.19/video.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/videojs-flash@2/dist/videojs-flash.min.js"></script>
    </head>
    <body>
        <!--vjs-big-play-centered 播放按钮居中-->
        <!--poster默认的显示界面,就是还没点播放,给你显示的界面-->
        <!--controls 规定浏览器应该为视频提供播放控件-->
        <!--preload="auto" 是否提前加载-->
        <!--autoplay 自动播放-->
        <!--loop=true 自动循环-->
        <!--data-setup='{"example_option":true}' 可以把一些属性写到这个里面来,如data-setup={"autoplay":true}-->
        <video id="my-player"
            class="video-js vjs-default-skin vjs-big-play-centered" controls
            preload="auto" autoplay="autoplay"
            poster="images/logo.png" width="500" height="400"
            data-setup='{}'>
            <!--src: 规定媒体文件的 URL  type:规定媒体资源的类型-->
            <source src='rtmp://192.168.174.3:1935/live/1234' type='rtmp/flv' />
        </video>
        <script type="text/javascript">
            // 设置flash路径,用于在videojs发现浏览器不支持HTML5播放器的时候自动唤起flash播放器
            videojs.options.flash.swf = 'https://cdn.bootcss.com/videojs-swf/5.4.1/video-js.swf';
              //my-player为页面video元素的id
            var player = videojs('my-player'); 
              //播放
            player.play(); 
        </script>
    </body>
</html>

注意:必须要先安装Flash player,不然怎么配置都是无法播放的。还有就是谷歌不再支持Flash播放,如下图,点击不安全,Flash修改为允许。

image-20210526223818519

谷歌浏览器Adobe Flash Player不是最新版本问题 && 如何下载Flash Player

ffmpeg 推流:ffmpeg -re -i test.mp4 -vcodec libx264 -acodec aac -f flv rtmp://127.0.0.1:1935/live/1234

image-20210526222848247

  • 5
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
要搭建RTMP媒体服务,你需要完成以下两个步骤: 1. 安装NginxRTMP模块 2. 配置NginxRTMP模块 下面我将为你详细介绍如何完成这两个步骤。 ## 安装NginxRTMP模块 ### 安装Nginx 首先,你需要安装Nginx。在Ubuntu系统上,可以使用以下命令进行安装: ``` sudo apt-get update sudo apt-get install nginx ``` 安装完成后,你可以使用以下命令验证Nginx是否成功安装: ``` nginx -v ``` 如果成功安装,你应该可以看到Nginx的版本信息。 ### 安装RTMP模块 安装Nginx后,你需要安装RTMP模块。RTMP模块可以让Nginx支持RTMP协议,从而实现媒体服务。 在Ubuntu系统上,你可以使用以下命令下载RTMP模块: ``` sudo apt-get install libnginx-mod-rtmp ``` 安装完成后,你需要启用RTMP模块。可以使用以下命令启用: ``` sudo ln -s /usr/share/nginx/modules-available/mod-rtmp.conf /etc/nginx/modules-enabled/ sudo ln -s /usr/share/nginx/modules-available/mod-rtmp.load /etc/nginx/modules-enabled/ ``` ## 配置NginxRTMP模块 安装完成NginxRTMP模块后,你需要配置NginxRTMP模块以实现媒体服务。 ### 配置Nginx 首先,你需要编辑Nginx配置文件。可以使用以下命令打开默认Nginx配置文件: ``` sudo nano /etc/nginx/nginx.conf ``` 在文件末尾添加以下代码: ``` rtmp { server { listen 1935; chunk_size 4096; application live { live on; record off; } } } ``` 这里我们定义了一个RTMP服务器,它将监听1935端口并支持媒体服务。在application块中,我们定义了一个名为live的应用程序,它将允许直播,并关闭录制。 ### 启动Nginx 完成Nginx配置后,你需要启动Nginx。可以使用以下命令启动: ``` sudo service nginx start ``` ### 配置和拉 现在,你可以使用推软件将视频推送到服务器上。例如,可以使用OBS Studio或FFmpeg进行推。 在OBS Studio中,你需要配置以下设置: - 类型:自定义服务器 - URL:rtmp://your-server-ip:1935/live - 关键字:随意命名 在FFmpeg中,你可以使用以下命令进行推: ``` ffmpeg -re -i input.mp4 -c copy -f flv rtmp://your-server-ip:1935/live/stream-name ``` 这里我们将本地input.mp4文件推到服务器上,名称为stream-name。 完成推后,你可以使用以下命令进行拉: ``` ffplay rtmp://your-server-ip:1935/live/stream-name ``` 这里我们使用ffplay命令进行拉。你也可以使用其他支持RTMP协议的播放器进行拉。 到这里,你已经成功搭建了RTMP媒体服务。祝你好运!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值