下载和编译SRS 利用OBS推流RTMP到SRS 从RTSP镜头拉取流到SRS SRS demo 运行 SRS流程简单分析 SRS支持将RTMP流录制成flv文件 一、下载和编译SRS 官方地址:https...由于设置了HLS分发,所以在Nginx目录下(./objs/nginx/html/live)会有m3u8/ts。...:指定ts切片的最小长度(单位:秒) hls_window:指定HLS大小,即m3u8中ts文件的时长之和,超过总时长后,丢弃第一个m3u8中的第一个切片,直到ts的总时长在这个配置项范围之内。...#启动分发hls(m3u8/ts)的nginx ....192.168.43.118/live/livestream.m3u8 三、从RTSP镜头拉取流到SRS 手机作为RTSP摄像头,安装EasyIPCamera。
一般点播或者直播服务器都是使用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停止转流,文件夹底下的文件也会自动清除。...后面详细介绍如何实现网页版的播放端推流、看端拉流、以及播放控制,敬请期待。
拉流 在《体验开源项目lal》一文中,咱们先是用rtmp协议推流,然后就行了拉流操作,尽管只用rtmp推流,然而拉流的时候却可以使用多种协议:rtmp、flv、hls,这就有意思了,想必lal在处理推流数据时有特殊处理吧...,所以才能用各种协议来拉流 为了弄明白其中原因,本篇咱们就来阅读hls相关源码,看看rtmp推流时为hls做了什么,以及hls拉流时lal的详细逻辑 关于hls和m3u8的细节,就在本篇展开了,这个仅给出一些关键信息作为参考...lalserver的启动源码阅读 Golang流媒体实战之五:lal推流服务源码阅读 Golang流媒体实战之六:lal拉流服务源码阅读 Golang流媒体实战之七:hls拉流服务源码阅读](https...,其实很简单,就是根据请求到达文件名找到文件,读取内容并返回,注意代码注解中有详细说明 // 根据请求信息生成读取TS或者M3U8文件的关键参数,例如流名和文件路径 ri := PathStrategy.GetRequestInfo...拉流服务的源码阅读已经完成,简单来说,就是一路RTMP的推流会在处理每个音视频消息的时候,实时生成m3u8文件,以及多个TS文件,这样每当hls拉流请求到达时,就可以根据指定的文件名返回已经生成的内容了
#开启录制功能,会将直播的信息保存成一个flv文件 record all; #视频录制存放目录,注意 因为需要生成文件.../m3u8File; #切片视频文件存放位置(HLS,m3u8文件存放位置) hls_fragment 2s; #每个视频切片的时长...#ts分片文件设置 video/mp2t ts; } #指向访问m3u8文件目录...推流 下一步我们进行obs推流 推流后可以让其他端口进行拉流播放; 拉流 拉流的话这里提供两种方式 rtmp地址: 第一种直接原地址rtmp:进行拉流。...http地址: 另外一种是推荐的http:进行拉流 格式如下:http://localhost:80/live_hls/1441970998831222784.m3u8 可以看到访问直播流是没有问题的~
推流只能用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协议。
推流只能用rtmp协议,拉流可以使用rtmp协议和hls协议。rtmp协议时adobe公司开发的开放协议,hls是苹果公司推出的直播协议。...on; #开启hls hls_path /usr/local/etc/nginx/html/multimedia/hls; #hls的ts切片存放路径 .../usr/local/etc/nginx/html/multimedia/hls目录下生成很多ts格式的视频切片和一个m3u8格式的文件,我们想要用http协议访问这个m3u8文件就需要再配置http模块...但问题是现在流行的时移动端直播,而苹果就没支持过flash播放器,所以目前正常方法解决不了在移动端使用rtmp协议拉流的问题。...移动端使用rtmp协议拉流 因为苹果不支持flash所以使用rtmp拉流肯定是不行的,但是可能客户给我们的就只有rtmp协议,那么我们就可以用到上面的另外一个地址,把rtmp协议转成hls协议。
rtsp协议流,转换为rtmp协议流,推送给nginx的rtmp服务, 然后由nginx的rtmp模块将流切片,转换为m3u8+ts格式片断,然后由nginx对外提供web访问m3u8和ts片段的服务,...的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 {
2、直播缓存带的的延迟 为了保证直播的流畅度,推流端和拉流播放端都会缓存一些数据,当的网络质量不好时,直播流的数据推送拉取就会变慢产生阻塞,这时候数据就会积累到缓冲区导致延迟。...才能播放 2s - 3s RTMP 优质线路下理论延迟最低 高并发情况下表现不佳 1s - 3s HLS(m3u8) 手机浏览器支持度高 延迟非常高 10s - 30s FLV延迟一般在2-10秒左右...HLS的工作原理是把整个流分成一个个小的TS文件,根据文件索引下载TS文件进行播放,每个TS文件的大小限制了它的延迟,很多播放器要等3个TS才播放,而3个TS可能就有几十秒了,所以HLS在标准直播中延迟最高...检查播放协议 如果播放协议采用的是 HLS(m3u8)协议,并感觉延迟较大,这个是正常的。...2.png 继续生成一个播放地址,播放地址类型选择UDP 3.png 最后我们就可以拿到WebRTC的播放地址去进行拉流测试了,下图是延迟测试的结果,可以看到延迟只有120ms比起标准直播的延迟可是低了太多了
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索引文件进行播放,使用方式也十分简单,代码如下: <!
在我们获取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作为传输协议。
拉取视频数据就是使用的上面的协议....这节呢咱就安装并启动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
PS: 将完成视频比特流放到一个盒子里,生成固定的文件 TS: 将接受到的视频,分成不同的盒子里。最终生成带有多个盒子的文件。...HLS 主要的两块内容是 .m3u8 文件和 .ts 播放文件。...接受服务器会将接受到的视频流进行缓存,然后缓存到一定程度后,会将这些视频流进行编码格式化,同时会生成一份 .m3u8 文件和其它很多的 .ts 文件。...分片:将 TS 文件分成若干个相等大小的 .ts 文件。并且生成一个 .m3u8 作为索引文件(确保包的顺序) 分发:由于 HLS 是基于 HTTP 的,所以,作为分发,最常用的就是 CDN 了。...HLS 首次连接时,总共的延时包括: TCP 握手,2. m3u8 文件下载,3. m3u8 下的 ts 文件下载。
图片众所周知,国标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一般作为拉流,延迟较低,适配播放场景更灵活。
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
/livego 流地址 rtmp推流:rtmp://127.0.0.1:1935/live/taylor rtmp拉流:rtmp://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
简单讲就是把整个流分成一个个小的,基于 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 表示生成的 .m3u8 和 ts 文件所存放的地址,hls_fragment 表示切片时长,mysteam 表示一个实例,即将来要生成的文件名可以先自己随便设置一个
视频监控汇聚平台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一般作为拉流,延迟较低,适配播放场景更灵活。
工作中服务器会将推送过来的流媒体经过部署再把资源推到CDN上,一般我们静态的资源或者多媒体资源都会发布到CDN来保证用户体验和拉取的速度。...因为M3U8是一个索引文件,他会被解析成很多的.ts片段,每一个片段就是一个直播流的分段。...不一定包含了ts文件,也有可能嵌套了一层m3u8文件,也就是说第一个拿到的m3u8文件里面还是m3u8文件。...如果当前的m3u8里面包含了m3u8文件,那么当前这个文件就叫master playlist。 如果当前的m3u8文件里面包含的是ts, 那他就叫media playlists。...第二行是版本的声明,默认是3,第三行是默认视频的时长,第四行是视频流块的个数,每次请求都会加1,再往下就是视频的ts文件,前面的9.901是这个ts文件的时长。
除了TS视频文件本身,还定义了用来控制播放的m3u8文件(文本文件)。 为什么苹果要提出HLS这个协议,其实他的主要是为了解决RTMP协议存在的一些问题。...这个视频在server服务器上被转换成HLS格式的视频(既TS和m3u8文件)文件。...#EXT-X-PLAYLIST-TYPE:VOD的意思是当前的视频流并不是一个直播流,而是点播流,换句话说就是该视频的全部的ts文件已经被生成好了,#EXT-X-ENDLIST这个表示视频结束,有这个标志同时也说明当前的流是一个非直播流...上面的例子中就是一个点播模式下的m3u8的结构。 Live 模式就是实时生成M3u8和ts文件。...但是Live模式下略有不同,因为播放的同时,新ts文件也在被生成中,所以客户端实际上是下载一次二级index文件,然后下载ts文件,再下载二级index文件(这个时候这个二级index文件已经被重写,记录了新生成的
领取专属 10元无门槛券
手把手带您无忧上云