单播不再赘述,这里重点介绍下我们的组播技术方案: 组播解决的主要痛点是服务器部署和带宽占用问题,一般来说,内网电子教室/无纸化/实时同屏场景用RTMP推送+RTMP服务器,然后其他端从服务器拉取RTMP...通过组播技术方案,只要网络设备支持组播组网,轻松实现多并发的同屏/摄像头直播场景。...但是,组播的劣势在于,高码率的无线网络环境体验很差,也就是说,如果是Windows或者Android平台推送,Android无线PAD播放,真正好用的,还是RTMP推拉流技术解决方案。...教师端:如教师有移动的PAD,可以直接推到RTMP服务器,然后共享出去; 4. 学生端:直接拉取RTMP流播放即可; 5....RTMP延迟大,这种说法,相对片面,好多是由于推拉流模块本身问题导致(如果服务器系NIGNX或SRS,基本可排除服务器转发导致的大时延,不要再赖服务器了),从我们官方和实际场景来看,RTMP整体技术方案
三、组播: 主机之间“一对一组”的通讯模式,也就是加入了同一个组的主机可以接受到此组内的所有数据,网络中的交换机和路由器只向有需求者复制并转发其所需数据。...组播的优点: 需要相同数据流的客户端加入相同的组共享一条数据流,节省了服务器的负载。具备广播所具备的优点。 需要相同数据流的客户端加入相同的组共享一条数据流,节省了服务器的负载。...组播的缺点: 与单播协议相比没有纠错机制,发生丢包错包后难以弥补,但可以通过一定的容错机制和QOS加以弥补。...现行网络虽然都支持组播的传输,但在客户认证、QOS等方面还需要完善,这些缺点在理论上都有成熟的解决方案,只是需要逐步推广应用到现存网络当中。
可以看出在浏览器里做直播,使用HTTP-FLV协议是不错的,性能优于RTMP+Flash,延迟可以做到和RTMP+Flash一样甚至更好。...不支持 flv.js 就使用 Flash播放器播 RTMP 流。Flash兼容性很好,但是性能差默认被很多浏览器禁用。...它会启动RTMP(1935端口)服务用于主播推流,以及HTTP-FLV(7001端口)服务用于播放。实现播放页 在react体系里使用react flv.js 组件reflv 快速实现。...这是你还看不到直播,是因为还没有主播推流。 你可以使用OBS来推流,注意要配置好OBS: ?...flv.js 获取FLV TAG后解析出压缩后的音视频数据喂给Video播放。 知道流程后我们就知道从哪入手优化了: 主播端采集时收集了一段时间的音视频原数据,它专业的叫法是GOP。
可以看出在浏览器里做直播,使用HTTP-FLV协议是不错的,性能优于RTMP+Flash,延迟可以做到和RTMP+Flash一样甚至更好。...不支持 flv.js 就使用 Flash播放器播 RTMP 流。Flash兼容性很好,但是性能差默认被很多浏览器禁用。...它会启动RTMP(1935端口)服务用于主播推流,以及HTTP-FLV(7001端口)服务用于播放。 实现播放页 在react体系里使用react flv.js 组件reflv 快速实现。...这是你还看不到直播,是因为还没有主播推流。...flv.js 获取FLV TAG后解析出压缩后的音视频数据喂给Video播放。 知道流程后我们就知道从哪入手优化了: 主播端采集时收集了一段时间的音视频原数据,它专业的叫法是GOP。
当前的网络中有三种通讯模式:单播、广播、组播(多播),其中的组播出现时间最晚但同时具备单播和广播的优点,最具有发展前景。...组播的优点: 1. 需要相同数据流的客户端加入相同的组共享一条数据流,节省了服务器的负载。具备广播所具备的优点。 2....由于组播协议是根据接受者的需要对数据流进行复制转发,所以服务端的服务总带宽不受客户接入端带宽的限制。 IP协议允许有2亿6千多万个(268435456)组播,所以其提供的服务可以非常丰富。 3....组播的缺点: 1.与单播协议相比没有纠错机制,发生丢包错包后难以弥补,但可以通过一定的容错机制和QOS加以弥补。...2.现行网络虽然都支持组播的传输,但在客户认证、QOS等方面还需要完善,这些缺点在理论上都有成熟的解决方案,只是需要逐步推广应用到现存网络当中。
思路(如图): 1,开启推流服务器(这里我的Nginx-rtmp服务器搭建成功) 进入docker 开启推流服务器 docker run -it -p 1935:1935 -p 8000:80 --...:1935/live/jing 使用第三方软件推流:(例如:OBS Studio) 3,拉流 这里前端使用的是通过VUE 注意使用video需安装以下几个依赖 cnpm install video.js...cnpm install aes-decrypter cnpm install m3u8-parser cnpm install mpd-parser cnpm install mux.js cnpm...install url-toolkit cnpm install videojs-contrib-hls //vue 的video插件 import videojs from 'video.js
MP4文件起播慢原因 我们在做录制的时候,会遇到这样的问题,有的开发者会把直播录制的mp4文件,用来做点播之用,这时候,会发现需要文件下载下来,才可以正常播放,也就我们常说的起播比较慢。...以大牛直播SDK的Windows RTSP|RTMP播放器(SmartPlayer)为例,页面点击“录像”按钮后,开始录像和一个文件录制完成,我们都会有录像事件回调上来,如果需要将moov移到mdat之前...finished file: "); } sb.Append(recorder_file_name); MessageBox.Show(sb.ToString()); } 总结 以上是针对直播流录制起播慢的处理
EasyPlayer-Android播放器是一款可针对RTSP、RTMP、RTSP&RTMP协议进行过优化的流媒体播放器,其中我们引以为傲的两个技术优势就是起播速度快和播放延迟低。...Video.js 是一个通用的在网页上嵌入视频播放器的 JS 库,Video.js 自动检测浏览器对 HTML5 的支持情况,如果不支持 HTML5 则自动使用 Flash 播放器。...Video.js实例化video时添加属性。 解决问题: 在video.js实例化video标签时添加loop此属性就可以实现播放完自动循环播放。...更多关于EasyPlayer EasyPlayer是一款流媒体播放器系列项目,支持RTSP、RTMP、HTTP、HLS、UDP、RTP、File等多种流媒体协议播放、 支持本地文件播放,支持本地抓拍、本地录像...随着多年不断的发展和迭代,不断基于成功的实践经验,发展出包括有: EasyPlayer RTSP、EasyPlayer RTMP、EasyPlayerPro 和EasyPlayer.js 等播放器。
”,“用什么播放器播HTTP-FLV”。...其实很多播放器底层都是用的MSE,比如flv.js播放HTTP-FLV或者WebSocket-FLV,比如hls.js播放HLS,比如dash.js播放DASH切片。...如果是替代RTMP,一般来说要用HTTP-FLV,因为RTMP延迟也是3秒左右。 看业务对平台的要求,跨平台要求很强就用HLS,比如要在PC和移动端浏览器中都能播放那就要选HLS了。...移动端微信小程序,用RTMP,或HLS。 移动端Native,用RTMP或HTTP-FLV。 用什么播放器?...HLS,PC上用hls.js,Safari、iOS、Android可以H5直接播。 WebRTC,PC上用H5(得自己写代码调API),移动端得用SDK。 引用 SRS开源服务器
”,“该选HTTP-FLV还是WebRTC”,“用什么播放器播HTTP-FLV”。...本质上有两个技术: MSE:目前很成熟的技术,是js的解码器,把MP4格式的文件,送到MSE解码播放。...其实很多播放器底层都是用的MSE,比如flv.js播放HTTP-FLV或者WebSocket-FLV,比如hls.js播放HLS,比如dash.js播放DASH切片。...移动端微信小程序,用RTMP,HTTP-FLV或HLS。 移动端Native,用RTMP或HTTP-FLV。...HLS,PC上用hls.js,Safari、iOS、Android可以H5直接播。 WebRTC,PC上用H5(得自己写代码调API),移动端得用SDK。 各位收好,不谢。
前言 最近在学习rtmp协议,在看官方文档的时候总是懵懵懂懂,硬生生看了两天,现在基本上了解rtmp协议了,想用自己觉得比较清晰的方式来讲解rtmp协议,希望能够对向我一样的初学者有所帮助。...本文将通过以下四部分讲解rtmp协议。...1、消息 2、块 3、rtmp的消息类型 4、实例分析rtmp传输过程 一、消息 消息是rtmp的基本数据单元,服务端和客户端通过在网络上发送RTMP消息进行通讯。...消息格式 RTMP消息头和载荷两部分。...上面已经详解讲解了rtmp的数据格式了,下面来讲解具体的rtmp协议内容。 载荷 块的载荷就是消息的载荷内容。 总结一下:消息是rtmp的基本数据单元,块是用于将消息重新封装在网络上传输。
大牛直播SDK(Github)多路RTMP/RTSP转RTMP转发软件,系原有转发SDK基础上,官方推出的Windows平台定制版。...如监控类摄像机、NVR等,通过厂商说明或Onvif工具,获取拉流的RTSP地址,图形化配置,完成拉流转发等操作,轻松实现标准RTMP服务器(或CDN)对接。...视频转发支持H.264、H.265(需要RTMP服务器或CDN支持扩展H.265),音频支持配置PCMA/PCMU转AAC后转发,并支持只转发/录制视频或音频,RTSP拉流端支持鉴权和TCP/UDP模式设置和...添加转发项配置信息 [image] 配置说明: 添加配置项:点击页面“添加”按钮: ² 序号:无需关注,系统自动生成; ² 名称:该路转发配置项的描述信息; ² 拉流地址(必须填):需要转发的RTSP或RTMP...地址; ² 推流RTMP地址:需要转推的RTMP地址; ² 推流播放地址:需要预览的播放地址; ² 音视频转发选项:可选择之转发音频或视频,亦或同时转发音视频; ² 录像参数配置:可选择录制音频或视频,
RTMP消息块流和RTMP一起适用于多样性音视频应用程序,从一对一和一对 多向视频点播服务器直接广播到交互式会议应用程序。...RTMP协议是应用层协议,是要靠底层可靠的传输层协议(通常是TCP)来保证信息传输的可靠性的。...在基于传输层协议的链接建立完成后,RTMP协议也要客户端和服务器通过“握手”来建立基于传输层链接之上的RTMP Connection链接。 2....3. rtmp协议握手过程 要建立一个有效的rtmp连接,首先经过”握手”阶段,规则如下: 客户端被指定依次向服务器发送C0,C1,C2三个chunk,服务器向客户端发送S0,S1,S2三个chunk...,大小1字节 版本:8比特,C0:客户端需求的rtmp版本,S0:服务器选择的rtmp版本,如图: 4.2 握手第二阶段: 客户端发送C1包,C1包大小1536字节,格式如下图: time:包含了一个时间戳
RTMP 基础 RTMP 概念 与 HTTP(超文本传输协议)同样是一个基于 TCP 的 Real Time Messaging Protocol(实时消息传输协议)。...当然我们也可以借助一些实现了 RTMP 协议的开源库来完成这一过程。 RTMPDump RTMPDump 是一个用来处理 RTMP 流媒体的开源工具包。...变量 file(GLOB rtmp_source *.c) # 编译静态库 add_library(rtmp STATIC ${rtmp_source} ) 在 中导入这个 CMakeLists.txt...#XXX需要链接rtmp库 target_link_libraries(XXX rtmp ...)...RTMP 视频数据 RTMP 视频流格式与 FLV 很相似,通过查看 FLV 的格式文档,就能够知道 RTMP 视频数据应该怎么拼接。
rtmp的协议的数据包,总的来讲分为两大部分,一部分是Rtmp Header,另一部分为Rtmp Body,这一篇我们来主要讲解一下Rtmp Header的组织形式。...RTMP header的长度不固定,可能的长度为12字节,8字节,4字节,1字节。具体长度为多少个字节,由RTMP header数据包的第一个字节的高2位决定。 ?...抓包看下,RTMP HEADER的长度。...图中,RTMP Header的第一个字节为0x03,高两位的值为00,所以,整个RTMP Header的长度就是4个字节了。...知道了RTMP header的第一个字节的作用以后,接下来我们看下几种不同长度的RTMP Header。 12字节的RTMP Header ?
上一篇讲了RTMP数据包中关于Header的数据组织格式,不过一个完整的RTMP数据包除了Header之外,紧跟着的是RTMP Body,这一篇就继续来说一下RTMP Body的数据组织结构了。...说到RTMP Body的数据包组织格式,就不得不提到AMF。...那么AMF和RTMP Body又有什么关系呢,不才,RTMP数据包的序列化就是按照AMF的格式进行的。...说完AMF,再回到我们的RTMP Body,RTMP Body就是按照AMF0规范,将数据包进行组织,然后再通过网络发送的。...好了,接下来就结合wireshark实际抓到的RTMP数据包,一起熟悉AMF0,同时也熟悉RTMP Body的数据包组织方式。 先看一下_result的数据包。 ?
1 多播地址 IP多播地址采用D类IP地址确定多播的组,地址范围是224.0.0.0 到 239.255.255.255.... 2 组管理协议(IGMP) 两个多播节点之间的所有路由器必须支持IGMP协议 任何没有开启IGMP的路由器仅简单的丢弃接收到的多播数据... 主机在接收IP多播数据之前,必须成为IP多播组的成员。...printf(" 开始接收多播组上的数据......printf(" 开始接收多播组上的数据...
/// /// 多播委托就是将多个函数指向一个委托 /// static void Main(string
RTMP RTMP(Real Time Messaging Protocol)是属于 Adobe 的一套视频协议,这套方案需要专门的 RTMP 流媒体,并且如果想要在浏览器上播放,无法使用 HTML5...://127.0.0.1:1935/hls 这个时候可以看到文件夹里已经有许多流文件存在,且不停地更新: 然后我们可以使用 video.js+video.js-contrib-hls 来播放这个视频...的命令 前端 import flv.js,然后使用它来播放 // 前端使用 flv.js,开启实时模式,然后访问这个 nginx 地址下的路径即可 import flvJs from 'flv.js'...可以看到其流程大概分为这几步: 采集视频流(主播端使用 RTMP 进行推流) 推流到 CDN 节点(上传流) CDN 节点转到直播中心,直播中心类似于强大的具有计算能力的中间源,可以提供额外服务诸如落存...直播中间分发到 CDN 节点 播放(阿里云支持 RTMP、FLV 及 HLS 三种播流协议)
组播是在局域网中向一个子网内加入了某个组播组的客户端发送批量发送数据,它类似于广播但并非广播,组播的地址有固定的几种,本案例中使用了239.0.0.2这个组播地址,具体实现代码分客户端和服务端,请参考:...srvaddr.sin_port= htons(SERVER_PORT); bind(sock, (struct sockaddr*)&srvaddr, sizeof(srvaddr)); // 设置组播地址...0.0.0.0”, &group.imr_address);// ip group.imr_ifindex = if_nametoindex(“eth0”);// 网卡索引号 // 设置发送数据包是组播方式发送
领取专属 10元无门槛券
手把手带您无忧上云