前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >搭建直播系统并实现h5播放rtmp

搭建直播系统并实现h5播放rtmp

原创
作者头像
我的小熊不见了丶
修改于 2020-07-09 09:31:52
修改于 2020-07-09 09:31:52
8.2K0
举报
文章被收录于专栏:晓月寒·晓月寒·

推流只能用rtmp协议,拉流可以使用rtmp协议和hls协议。rtmp协议时adobe公司开发的开放协议,hls是苹果公司推出的直播协议。我们使用nginx的rtmp插件来搭建推流服务器

基于nginx的rtmp直播服务器

安装加载nginx-rtmp-module模块的nginx

代码语言:txt
复制

./configure --prefix=/usr/local/nginx --add-module=../nginx-rtmp-module.1.1.4 --with-http_ssl_module

代码语言:txt
复制
  • make && make install 安装
  • 配置rtmp模块
代码语言:txt
AI代码解释
复制
rtmp {
    server {
        listen 9999;

        application myapp {
            live on;
       	}
       application live {
             live on;   #开启实时
             hls on;    #开启hls
             hls_path /usr/local/etc/nginx/html/multimedia/hls;  #hls的ts切片存放路径
             hls_fragment 2s;         #本地切片长度
             hls_playlist_length 6s;  #HLS播放列表长度
       }
    }
}

使用rtmp协议并且监听了9999端口,如果我们的推流地址填写的是rtmp://ip:9999/myapp,那么就是纯粹的rmtp协议的流,如果推流地址填写的是rmtp://ip:9999/live,那么推流之后会在/usr/local/etc/nginx/html/multimedia/hls目录下生成很多ts格式的视频切片和一个m3u8格式的文件,我们想要用http协议访问这个m3u8文件就需要再配置http模块。

  • 配置http模块
代码语言:txt
AI代码解释
复制
location /live {
    types {
        application/vnd.apple.mpegurl m3u8;
        video/mp2t ts;
    }
    alias /usr/local/etc/nginx/html/multimedia/hls/;
    add_header Cache-Control no-cache;
}

当我们的推流地址填写的是rtmp://ip:9999/live/room1时,使用http://ip:80/live/room1.m3u8就能把rtmp转成hls访问这个直播流了。

  • 新建文件夹 mkdir -p /usr/local/etc/nginx/html/multimedia/hls/
  • 重启nginx nginx -s reload

以上就完成了直播服务器的搭建。

1594282941784.png
1594282941784.png

使用video.js在h5播放rtmp

使用obs推流,推流地址可以填写rtmp://ip:9999/myapp或者rtmp://ip:9999/live,如果用的时rtmp://ip:9999/myapp,在h5端播放的时候会涉及到h5播放rtmp协议的问题,h5安装vide.js之后还要额外安装videojs-flash插件。

video.js版本是7.8.3

安装好之后在相关页面引入:

代码语言:txt
AI代码解释
复制
import videojs from 'video.js';
import "videojs-flash"
import 'video.js/dist/video-js.css'

然后初始化videojs即可:

代码语言:txt
AI代码解释
复制
player = videojs("myVideo", {
    poster: baseUrl + '/file/download?file_id='+that.props.videos.foreImg,
    controls: true,
    preload: 'auto',
    // fluid:false,
    fill: true,
    playsinline: true,
    languages: 'en',
    suppressNotSupportedError: false,
    sources: that.props.videos.url,
    techOrder: ['flash', 'html5']
})

在pc端播放rtmp时依赖flash播放器,所以要打开flash,这样就解决了pc端rtmp协议直播流的问题。

但问题是现在流行的时移动端直播,而苹果就没支持过flash播放器,所以目前正常方法解决不了在移动端使用rtmp协议拉流的问题。

移动端使用rtmp协议拉流

因为苹果不支持flash所以使用rtmp拉流肯定是不行的,但是可能客户给我们的就只有rtmp协议,那么我们就可以用到上面的另外一个地址,把rtmp协议转成hls协议。

搭建ffmpeg

rtmp转flv

代码语言:txt
AI代码解释
复制
ffmpeg  -re -i rtmp://ip:9999/myapp/room1 
-vcodec libx264 -vprofile baseline -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://ip:9999/live/room1

这样当客户给的拉流地址是rtmp://ip:9999/myapp/room1时,可以用ffmpeg 转成http://ip:9999/live/room1.m3u8实现全平台播放了。

但是这样还有个问题,因为客户给地址的话,用户拉流是从客户平台上拉,但是如果使用自己的服务器转了一下的话,那就变成用户从我们自己的服务器拉流了,如果用户比较多的话那带宽的问题就要考虑一下了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ubuntu搭建推流服务器Nginx+rtmp
****前言**** 最近这两年直播平台及其流行,然而我呢? 也要玩玩推流服务器~~~ 实现服务器推流/PC客户端观看/浏览器客户端查看 ---- ****简介**** 对于Nginx的优点呢就不多说了,两句话: 1)并发量高 2)可负载均衡 重点谈谈rtmp吧! RTMP全称是Real Time Messaging Protocol(实时消息传输协议),rmtp是一种通讯协议。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种
AlicFeng
2018/06/08
4.2K0
如何使用视频流媒体服务器支持HTML5直播?
视频直播这么火,再不学就out了!为了紧跟潮流,本文我也将向大家介绍一下视频直播中的基本流程和主要的技术点,包括但仅不限于前端技术。
EasyNVR
2020/04/23
2.9K0
如何使用视频流媒体服务器支持HTML5直播?
如何开发一款 H5 小程序直播?
大前端这几年算是一个热词,对于前段来说如果不是大前端,技术相对来说就已经算是落后了。如果还停留在对ES6,Vue这些基本技能的学习只能说处于一个及格线。
Nealyang
2021/01/14
3.7K0
如何开发一款 H5 小程序直播?
HTML 5 视频直播一站式扫盲
视频直播这么火,再不学就 out 了。 为了紧跟潮流,本文将向大家介绍一下视频直播中的基本流程和主要的技术点,包括但不限于前端技术。 1. H5 到底能不能做视频直播? 当然可以, H5 火了这么久,涵盖了各个方面的技术。 对于视频录制,可以使用强大的 webRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音对话或视频对话的技术,缺点是只在 PC 的 chrome 上支持较好,移动端支持不太理想。 对于视频播放,可以使用 HLS(HTTP Live Stream
腾讯Bugly
2018/03/23
4.8K2
HTML 5 视频直播一站式扫盲
前端中的直播
因为公司是做在线抓娃娃的,涉及到直播推流这一部分的工作。之前一直都是在App上面进行游戏,所以关于直播这一部分也是与安卓与IOS有关,与前端是没有关系的。但是现在新的需求就是要求这个在线抓娃娃要能够在网页上面进行游戏。所以,我的事情来了。对于没有涉及到前端音视频的这部分的需求,所以初入这一行,还是有点马马虎虎,花了一周多的时间终于是弄明白了。
踏浪
2019/11/05
4.9K0
Ngnix 搭建视频直播服务器[通俗易懂]
受疫情推迟开学影响,这段时间全国如火如荼推广网络教学,前段时间搭建了edx慕课平台,但还缺点什么,就是网络直播教学,花一天时间,搭建成功,记录备用。
全栈程序员站长
2022/08/13
4.9K0
Ngnix 搭建视频直播服务器[通俗易懂]
Nginx+FFmpeg打造自己的视频直播服务
现在很多项目都有视频实时播放的功能需求,例如监控,直播等,原始的摄像头采集的视频流协议一般都是 rtsp 协议,在旧版的浏览器中使用
ruochen
2021/11/24
6.1K0
openresy+nginx-rtmp-module搭建点播直播服务器
一般点播或者直播服务器都是使用nginx-rtmp-module作为服务器,然后使用ffmpeg或者obs来进行推流,客户端使用rtmp、http-flv、hls或者dash协议拉取转码后的数据,进行播放。
golangLeetcode
2024/04/10
5840
openresy+nginx-rtmp-module搭建点播直播服务器
Nginx学习之配置RTMP模块搭建推流服务
写在开始 小程序升级实时音视频录制及播放能力,开放 Wi-Fi、NFC(HCE) 等硬件连接功能。同时提供按需加载、自定义组件和更多访问层级等新特性,增强了第三方平台的能力,以满足日趋丰富的业务需求。 为更高效地连接用户与商家,小程序提供了实时音视频录制及播放组件。符合类目要求的小程序自助开通后,可自建或使用云服务,实现单向、双向甚至多向的音视频功能,如在线授课、远程咨询、视频客服,以及多人会议等。 2017-12-26微信小程序推送了这样一条消息,文档,代码也是简单的一笔带过,用户需要自建或使用云服务,实
小柒2012
2018/04/13
3.8K0
Nginx学习之配置RTMP模块搭建推流服务
nginx实现最简单的直播平台
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/09/26
6670
nginx实现最简单的直播平台
EasyNVR纯H5摄像机直播解决方案前端解析之:RTSP安防监控实时直播的网页H5自动播放方案
我们很多安防、互联网、直播的应用场景中,在打开一路直播流后,极少看到需要点击播放按钮才能直播 播放视频流的情况,但是由于H5场景的播放需要兼容的浏览器非常多,这样的情况下经常会遇到各种各样的摄像机网页播放的问题,比如这里解析的视频流自动播放的问题:
EasyNVR
2020/04/23
5K0
EasyNVR纯H5摄像机直播解决方案前端解析之:RTSP安防监控实时直播的网页H5自动播放方案
【直播】nginx搭建rtmp流直播环境
windows下很容易搭建,只需要下载nginx-1.7.11.3-Gryphon就可以了,解压之后运行run_ngnix.bat 能力强的同学自己编译最新版本nginx并使用吧
一朵灼灼华
2022/08/05
4K0
【直播】nginx搭建rtmp流直播环境
开源流媒体服务器SRS学习笔记(2) - rtmp / http-flv / hls 协议配置 及跨域问题
对rtmp/http-flv/hls这三种协议不熟悉的同学,强烈建议先看看网友写的这篇文章科普下:理解RTMP、HttpFlv和HLS的正确姿势 。
菩提树下的杨过
2019/09/12
4.9K0
如何搭建自己的流媒体直播带货系统
首先,你需要选择一台高性能的服务器来承载你的流媒体直播系统。服务器的配置应该能够满足你预计的用户量和带宽需求。
Tinywan
2024/03/02
6740
如何搭建自己的流媒体直播带货系统
【Dev Club 分享】H5 视频直播那些事
Dev Club 是一个交流移动开发技术,结交朋友,扩展人脉的社群,成员都是经过审核的移动开发工程师。每周都会举行嘉宾分享,话题讨论等活动。 本期,我们邀请了腾讯SNG Web前端开发工程师——吕鸣,为大家分享《H5 视频直播那些事》。 分享内容简介: 目前视频直播,尤其是移动端的视频直播已经火到不行了,基本上各大互联网公司都有了自己的直播产品,所以对于直播的一些基本知识和主要技术点也要有所了解,本次分享就向大家介绍一下其中的奥秘。 内容大体框架: 怎样利用H5来播放直播视频 怎样录制直播视频 怎样实时上传
腾讯Bugly
2018/03/23
1.7K0
简单的 H5 视频推流解决方案
作者:周超 导语 随着直播平台爆发式增长,直播平台从 PC 端转战移动端,紧跟着直播的潮流,自己学习实现了一套简单的 H5 视频推流的解决方案,下面就给小伙伴们分享一下自己学习过程中的经验。 环境部署 1、 配置、安装 Nginx; # ./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=/usr/local/src/
腾讯云开发者社区
2018/01/15
10K5
简单的 H5 视频推流解决方案
rtmp、m3u8直播小记
最近项目做跟视频有关的,一个是直播,一个是播放视频。使用video标签。视频直播有很多协议,rtmp、rtsp、hls等就自己去了解,业务有做到就会了解一些。
wade
2020/04/24
5.7K0
利用Docker挂载Nginx-rtmp(服务器直播流分发)+FFmpeg(推流)+Vue.js结合Video.js(播放器流播放)来实现实时网络直播
    众所周知,在视频直播领域,有不同的商家提供各种的商业解决方案,其中比较靠谱的服务商有阿里云直播,腾讯云直播,以及又拍云和网易云的有偿直播服务,服务包括软硬件设备,摄像机,编码器,流媒体服务器等。但是其高昂的费用以及较高的准入门槛让许多个人和小型企业望而却步,本文要讲解的是如何使用nginx-rtmp搭建直播服务器,配合FFmpeg推流,在网页端vue.js作为载体利用video.js作为流播放器,打造一套可用的在线视频直播方案。
用户9127725
2022/08/08
5.3K0
利用Docker挂载Nginx-rtmp(服务器直播流分发)+FFmpeg(推流)+Vue.js结合Video.js(播放器流播放)来实现实时网络直播
Nginx-rtmp+ FFmpeg +Docker + vue.js 直播系统搭建
进入docker 开启推流服务器  docker run -it -p 1935:1935 -p 8000:80 --rm alfg/nginx-rtmp
星哥玩云
2022/07/27
2.1K0
Nginx-rtmp+ FFmpeg +Docker + vue.js 直播系统搭建
html播放rtsp流,浏览器播放rtsp视频流解决方案
最近项目中需要实时播放摄像头rtsp视频流,于是就专门做了些研究。而浏览器不能直接播放,只有通过插件或者转码来实现这个需求。
全栈程序员站长
2022/11/02
6.3K0
推荐阅读
相关推荐
ubuntu搭建推流服务器Nginx+rtmp
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档