首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

openresy+nginx-rtmp-module搭建点播直播服务器

一般点播或者直播服务器都是使用nginx-rtmp-module作为服务器,然后使用ffmpeg或者obs来进行推,客户端使用rtmp、http-flv、hls或者dash协议转码后的数据...-f flv rtmp://host.docker.internal:1985/hls成功后我们可以下载工具vlc来进行,在vlc输入 rtmp://localhost:1985/hls/stream...转流成功后在我们之前配置的nginx rtmp模块的接收路径下(/hls)会生成m3u8索引文件m3u8其实就是ts文件的索引,ffmpeg会把一个直播源的数据分割成很多个ts文件,访问m3u8可以获取...ts文件的播放顺序,逐个播放,ts文件达到一定数量会自动删除前面无用的ts,并且如果ffmpeg停止转流,文件夹底下的文件也会自动清除。...后面详细介绍如何实现网页版的播放端推、看端、以及播放控制,敬请期待。

11910
您找到你想要的搜索结果了吗?
是的
没有找到

Golang流媒体实战之七:hls服务源码阅读

在《体验开源项目lal》一文中,咱们先是用rtmp协议推,然后就行了操作,尽管只用rtmp,然而的时候却可以使用多种协议:rtmp、flv、hls,这就有意思了,想必lal在处理推数据时有特殊处理吧...,所以才能用各种协议来 为了弄明白其中原因,本篇咱们就来阅读hls相关源码,看看rtmp时为hls做了什么,以及hls时lal的详细逻辑 关于hlsm3u8的细节,就在本篇展开了,这个仅给出一些关键信息作为参考...lalserver的启动源码阅读 Golang流媒体实战之五:lal推服务源码阅读 Golang流媒体实战之六:lal服务源码阅读 Golang流媒体实战之七:hls服务源码阅读](https...,其实很简单,就是根据请求到达文件名找到文件,读取内容并返回,注意代码注解中有详细说明 // 根据请求信息生成读取TS或者M3U8文件的关键参数,例如名和文件路径 ri := PathStrategy.GetRequestInfo...服务的源码阅读已经完成,简单来说,就是一路RTMP的推流会在处理每个音视频消息的时候,实时生成m3u8文件,以及多个TS文件,这样每当hls请求到达时,就可以根据指定的文件名返回已经生成的内容了

84520

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

只能用rtmp协议,可以使用rtmp协议和hls协议。rtmp协议是adobe公司开发的开放协议,hls是苹果公司推出的直播协议。...rmtp协议的,如果推地址填写的是rmtp://ip:9999/live,那么推之后会在/usr/local/etc/nginx/html/multimedia/hls目录下生成很多ts格式的视频切片和一个...m3u8格式的文件,我们想要用http协议访问这个m3u8文件就需要再配置http模块。...配置http模块 location /live { types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } alias /usr...移动端使用rtmp协议 因为苹果不支持flash所以使用rtmp肯定是不行的,但是可能客户给我们的就只有rtmp协议,那么我们就可以用到上面的另外一个地址,把rtmp协议转成hls协议。

6.3K20

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

只能用rtmp协议,可以使用rtmp协议和hls协议。rtmp协议时adobe公司开发的开放协议,hls是苹果公司推出的直播协议。...on;   #开启hls             hls_path /usr/local/etc/nginx/html/multimedia/hls; #hlsts切片存放路径            .../usr/local/etc/nginx/html/multimedia/hls目录下生成很多ts格式的视频切片和一个m3u8格式的文件,我们想要用http协议访问这个m3u8文件就需要再配置http模块...但问题是现在流行的时移动端直播,而苹果就没支持过flash播放器,所以目前正常方法解决不了在移动端使用rtmp协议的问题。...移动端使用rtmp协议 因为苹果不支持flash所以使用rtmp肯定是不行的,但是可能客户给我们的就只有rtmp协议,那么我们就可以用到上面的另外一个地址,把rtmp协议转成hls协议。

7.7K20

工具系列 | 视频监控RTSP转HLS解决方案

rtsp协议,转换为rtmp协议,推送给nginx的rtmp服务, 然后由nginx的rtmp模块将切片,转换为m3u8+ts格式片断,然后由nginx对外提供web访问m3u8ts片段的服务,...的index接收到请求,从getPara(0)获取到设备编码,然后根据设备编码从配置文件中找到设备的rtsp协议地址,基于javacv将数据推送给nginx的rtmp模块。...4.nginx的rtmp模块接收推送,进行切片生成ts片段,并生成m3u8格式媒体列表 rtmp{ server{ listen 1935; application...ts文件的服务 server{ listen 8888; #匹配m3u8请求,转发给后端rtmp服务 location ~ /hls/([0-9]+)/index\....m3u8 { proxy_pass http://127.0.0.1:8083/$1; } #ts片段文件匹配 location /hls {

6K31

低延迟直播的实现方法

2、直播缓存带的的延迟 为了保证直播的流畅度,推端和流播放端都会缓存一些数据,当的网络质量不好时,直播的数据推送就会变慢产生阻塞,这时候数据就会积累到缓冲区导致延迟。...才能播放 2s - 3s RTMP 优质线路下理论延迟最低 高并发情况下表现不佳 1s - 3s HLS(m3u8) 手机浏览器支持度高 延迟非常高 10s - 30s FLV延迟一般在2-10秒左右...HLS的工作原理是把整个分成一个个小的TS文件,根据文件索引下载TS文件进行播放,每个TS文件的大小限制了它的延迟,很多播放器要等3个TS才播放,而3个TS可能就有几十秒了,所以HLS在标准直播中延迟最高...检查播放协议 如果播放协议采用的是 HLSm3u8)协议,并感觉延迟较大,这个是正常的。...2.png 继续生成一个播放地址,播放地址类型选择UDP 3.png 最后我们就可以拿到WebRTC的播放地址去进行测试了,下图是延迟测试的结果,可以看到延迟只有120ms比起标准直播的延迟可是低了太多了

4.2K80

Nginx+FFmpeg打造自己的视频直播服务

rtsp测试地址,执行完以上命令之后如下图,则表示转流成功: 转流截图 转流成功后在我们之前配置的nginx rtmp模块的接收路径下(/server/hls)会生成m3u8索引文件m3u8其实就是...ts文件的索引,ffmpeg会把一个直播源的数据分割成很多个ts文件,访问m3u8可以获取ts文件的播放顺序,逐个播放,ts文件达到一定数量会自动删除前面无用的ts,并且如果ffmpeg停止转流,文件夹底下的文件也会自动清除...,nginx的rtmp模块帮我们做了这一点来防止内存溢出的问题,生成文件如下: m3u8 为了可以直接用http访问m3u8文件,我们在nginx的http模块下加入以下配置: server {...的shell 在hls目录下会生成m3u8文件 String shell = "ffmpeg -rtsp_transport tcp -i \"" + rtspUrl + "\" -vcodec...前台利用video.js播放视频 在前台我们可以利用video.js来对m3u8索引文件进行播放,使用方式也十分简单,代码如下: <!

5.8K74

视频直播技术干货:一文读懂主流视频直播系统的推拉架构、传输协议等

在我们获取TS文件之前:协议首先要求请求一个M3U8格式的文件M3U8是一个描述索引文件,它以一定的格式描述了TS地址的指向,我们根据M3U8文件中描述的内容,就可以获取每一段TS文件的CDN地址,通过加载...使用HLS协议播放视频时:首先会请求一个M3U8文件,如果是点播只需要在初始化时获取一次就可以拿到所有的TS切片指向,但如果是直播的话就需要不停地轮询M3U8文件,获取新的TS切片。...比如我们一个M3U8有5个TS文件,每个TS文件播放时长是2秒,那么一个M3U8文件的播放时长就是10秒,也就是说这个M3U8播放的直播进度至少是10秒之前的,这对于直播场景来说是一个比较大的弊端。...在直播中,我们通过HTTP-FLV协议的地址可以取到一段chunked数据。 打开文件后可以读取到16进制的文件,通过和FLV包结构对比,可以发现这些数据就是我们需要的FLV数据。...他们的封包格式都是FlV,但HTTP-FLV使用的传输协议是HTTP,RTMP使用RTMP作为传输协议。

4.4K22

2-视频传输,监控,直播方案-搭建视频服务器,推送视频,视频观看(RTMP,m3u8)

视频数据就是使用的上面的协议....这节呢咱就安装并启动RTMP服务器,然后呢咱用调试助手往服务器上上传视频, 然后 安装RTMP 1.上传RTMP文件(方式1),下面有个方式2可以直接用git,不需要自己上传 在以下目录点击上传...hls on;#启动hls功能(视频切片) hls_path /www/wwwroot/116.62.178.48/hls; #就是推文件存储位置 hls_fragment...其实呢这就是视频切片. 2.自行安装 VLC软件 3.先试一试从服务器rtmp视频 rtmp://替换自己服务器的ip地址/hls/yang 提示:最后那个yang就是咱推送的时候设置的秘钥哈...4.再试一试从服务器m3u8视频 http://替换自己的ip地址/hls/yang.m3u8 其它细节 首先咱地址是XXX://服务器IP地址/hls/xxx 后面那个之所以是hls

2K20

全面进阶 H5 直播

PS: 将完成视频比特流放到一个盒子里,生成固定的文件 TS: 将接受到的视频,分成不同的盒子里。最终生成带有多个盒子的文件。...HLS 主要的两块内容是 .m3u8 文件和 .ts 播放文件。...接受服务器会将接受到的视频流进行缓存,然后缓存到一定程度后,会将这些视频流进行编码格式化,同时会生成一份 .m3u8 文件和其它很多的 .ts 文件。...分片:将 TS 文件分成若干个相等大小的 .ts 文件。并且生成一个 .m3u8 作为索引文件(确保包的顺序) 分发:由于 HLS 是基于 HTTP 的,所以,作为分发,最常用的就是 CDN 了。...HLS 首次连接时,总共的延时包括: TCP 握手,2. m3u8 文件下载,3. m3u8 下的 ts 文件下载。

2.5K33

国标GB28181视频平台LiteCVR可支持的视频流播放协议汇总

图片众所周知,国标GB28181视频平台LiteCVR平支持多种视频流媒体协议输出,如:HLS、HTTP-FLV、WebSocket-FLV、WebRTC、RTSP、RTMP。...图片1)HLSHLS协议的文件由两部分组成:多个只有几秒长度的.ts切片视频文件;记录这些视频文件地址的.m3u8索引文件,这些静态视频文件是直接写入磁盘的。...HLS地址以http://开头、.m3u8结尾,这个地址就是索引文件的地址,客户端获取到索引文件后,就可以下载对应的切片文件开始播放。2)WebRTCWebRTC地址一般以webrtc://开头。...3)RTSPRTSP地址一般以rtsp://开头,一般用作摄像机等硬件设备的实时视频和推送。4)RTMPRTMP地址一般以rtmp://开头,既可以推,也可以,一般用于直播推。...5)HTTP-FLVHTTP-FLV地址以http://开头,基于http协议,功能和工作原理与RTMP相似。HTTP-FLV一般作为,延迟较低,适配播放场景更灵活。

39620

HLS的实现(iOS和OS X系统)

TS,并用通过HLS协议在浏览器播放,这一篇是在HLS点播实现(H.264和AAC码)基础上的延续,进行HLS的推。...核心思路 配置Nginx以支持HLS的推,iOS系统使用LFLiveKit推,OS X系统使用FFmpeg推端可以使用Safari浏览器或者VLC播放器。 效果展示 ?...m3u8; video/mp2t ts; } root /usr/local/var/www; add_header Cache-Control.../etc/nginx/nginx.conf 4、OS X系统推 使用FFmpeg对前文生成的mp4文件进行推(FFmpeg的安装看HLS点播实现(H.264和AAC码)) 在终端输入指令:...至此,我们熟悉了以下知识点: 采集视频源和音频源的数据,视频采用H264编码,音频采用AAC编码 视频和音频数据使用FFmpeg封装为MPEG-TS包和MP4文件 使用FFmpeg推 想深入了解rtmp

3K61

全面进阶 H5 直播(上)

PS: 将完成视频比特流放到一个盒子里,生成固定的文件 TS: 将接受到的视频,分成不同的盒子里。最终生成带有多个盒子的文件。...HLS 主要的两块内容是 .m3u8 文件和 .ts 播放文件。...接受服务器会将接受到的视频流进行缓存,然后缓存到一定程度后,会将这些视频流进行编码格式化,同时会生成一份 .m3u8 文件和其它很多的 .ts 文件。...分片:将 TS 文件分成若干个相等大小的 .ts 文件。并且生成一个 .m3u8 作为索引文件(确保包的顺序) 分发:由于 HLS 是基于 HTTP 的,所以,作为分发,最常用的就是 CDN 了。...HLS 首次连接时,总共的延时包括: TCP 握手,2. m3u8 文件下载,3. m3u8 下的 ts 文件下载。

9.5K2215

直播系统介绍

/livego 地址 rtmprtmp://127.0.0.1:1935/live/taylor rtmprtmp://127.0.0.1:1935/live/taylor hdl:http...://127.0.0.1:7001/live/taylor.flv hls:http://127.0.0.1:7002/live/taylor.m3u8 如果使用ffmpeg推 ffmpeg -re...苹果公司 基于HTTP HTML5可以直接播放,不需要编解码,需要在服务端切片,有Stream Segmenter的概念 格式: m3u8:索引文件,以m3u8为后缀。...用文本方式对媒体文件进行描述,由一系列标签组成 ts:传输文件,视频编码主要格式h264/mpeg4,音频为acc/MP3。...延迟较高,一般在10秒左右 使用情况 对于正常的直播场景,多数都是推使用Rtmp协议,使用HLS协议 参考: SRS的C++版本:https://github.com/ossrs/srs SRS

1.9K31

HTML 5 视频直播一站式扫盲

简单讲就是把整个分成一个个小的,基于 HTTP 的文件来下载,每次只下载一些,前面提到了用于 H5 播放直播视频时引入的一个 .m3u8文件,这个文件就是基于 HLS 协议,存放视频元数据的文件...每一个 .m3u8 文件,分别对应若干个 ts 文件,这些 ts 文件才是真正存放视频的数据,m3u8 文件只是存放了一些 ts 文件的配置信息和相关路径,当视频播放时,.m3u8 是动态改变的,video...标签会解析这个文件,并找到对应的 ts 文件来播放,所以一般为了加快速度,.m3u8 放在 web 服务器上,ts 文件放在 cdn 上。...HLS 直播延时 我们知道 hls 协议是将直播分成一段一段的小段视频去下载播放的,所以假设列表里面的包含5个 ts 文件,每个 TS 文件包含5秒的视频内容,那么整体的延迟就是25秒。...:1935/hls/mystream,其中 hls_path 表示生成的 .m3u8ts 文件所存放的地址,hls_fragment 表示切片时长,mysteam 表示一个实例,即将来要生成文件名可以先自己随便设置一个

4.6K70

TSINGSEE青犀视频汇聚平台EasyCVR多种视频流播放协议介绍

视频监控汇聚平台EasyCVR平支持多种视频流媒体协议输出,如:HLS、HTTP-FLV、WebSocket-FLV、WebRTC、RTSP、RTMP。...这几种播放协议介绍如下:1)HLSHLS协议的文件由两部分组成:多个只有几秒长度的.ts切片视频文件;记录这些视频文件地址的.m3u8索引文件,这些静态视频文件是直接写入磁盘的。...HLS地址以http://开头、.m3u8结尾,这个地址就是索引文件的地址,客户端获取到索引文件后,就可以下载对应的切片文件开始播放。2)WebRTCWebRTC地址一般以webrtc://开头。...3)RTSPRTSP地址一般以rtsp://开头,一般用作摄像机等硬件设备的实时视频和推送。4)RTMPRTMP地址一般以rtmp://开头,既可以推,也可以,一般用于直播推。...5)HTTP-FLVHTTP-FLV地址以http://开头,基于http协议,功能和工作原理与RTMP相似。HTTP-FLV一般作为,延迟较低,适配播放场景更灵活。

22020

如何开发一款 H5 小程序直播?

工作中服务器会将推送过来的流媒体经过部署再把资源推到CDN上,一般我们静态的资源或者多媒体资源都会发布到CDN来保证用户体验和的速度。...因为M3U8是一个索引文件,他会被解析成很多的.ts片段,每一个片段就是一个直播的分段。...不一定包含了ts文件,也有可能嵌套了一层m3u8文件,也就是说第一个拿到的m3u8文件里面还是m3u8文件。...如果当前的m3u8里面包含了m3u8文件,那么当前这个文件就叫master playlist。 如果当前的m3u8文件里面包含的是ts, 那他就叫media playlists。...第二行是版本的声明,默认是3,第三行是默认视频的时长,第四行是视频块的个数,每次请求都会加1,再往下就是视频的ts文件,前面的9.901是这个ts文件的时长。

3.5K20

HLS协议详解

除了TS视频文件本身,还定义了用来控制播放的m3u8文件(文本文件)。 为什么苹果要提出HLS这个协议,其实他的主要是为了解决RTMP协议存在的一些问题。...这个视频在server服务器上被转换成HLS格式的视频(既TSm3u8文件文件。...#EXT-X-PLAYLIST-TYPE:VOD的意思是当前的视频并不是一个直播,而是点播,换句话说就是该视频的全部的ts文件已经被生成好了,#EXT-X-ENDLIST这个表示视频结束,有这个标志同时也说明当前的是一个非直播...上面的例子中就是一个点播模式下的m3u8的结构。 Live 模式就是实时生成M3u8ts文件。...但是Live模式下略有不同,因为播放的同时,新ts文件也在被生成中,所以客户端实际上是下载一次二级index文件,然后下载ts文件,再下载二级index文件(这个时候这个二级index文件已经被重写,记录了新生成

2.4K10
领券