经过几个月的攻关,成功实现了RTC的直播推流与播放技术

众所周知,目前市面上存在的大部分的直播流技术,采用的直播推流都是RTMP协议,主要的架构框架大概为RTMP推流、服务端同步转换并输出RTMP、FLV、HLS等多种协议,相比于10年前的直播技术,这种技术体系已经是非常先进的了,各种低延时的策略都有了,看起直播来也算是比较流畅的:
EasyDSS直播技术
但当我们将这种技术应用到行业中的时候,就会感受到弊端:

  • 当推流设备为无线设备或者在网络较差的环境下时,RTMP的推流会出现较大的延时;
  • 播放端一般采用的是RTMP或者HTTP-FLV技术,其主要保障的是数据的完整性,而实时性的控制只能靠播放buffer来调节,不属于实时性优先型的直播;
  • RTMP、FLV流,无法充分利用H5浏览器的底层框架能力,RTMP需要flash、HTTP-FLV又是基于HTTP的框架之上,无法做到非常好的拥塞控制;

现在各大公有云厂商都在推进自己的RTC直播技术进程,按照我的理解,所谓的RTC直播,主要是几方面:

  • 一定要利用到WebRTC的底层框架对播放客户端的支撑,才能充分发挥WebRTC的优势;
  • WebRTC服务器不局限于某一种流程,百家争鸣,各自可以在流程范围内定义自己的流程;
  • WebRTC可以理解为HTTPS+RTP,信令沟通用HTTPS,流媒体用RTP;

经过几个月的攻关,我们也马上要发布我们的RTC整体框架,包括RTC的推流、RTC服务器、RTC播放器等,先可以看一下TSINGSEE的RTC对安防视频流的分发:

EasyRTC

这套RTC流程的实现,将会对我们之前做的RTMP推流、RTMP播放、UDP组播同屏等技术都将是一次革新,在实时性要求非常强的领域,RTC特性的支持,将对产品的竞争力是一次质的提升;

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在uniapp中实现H5直播推流,可以使用WebRTC技术WebRTC(Web Real-Time Communication)是一种支持浏览器之间实时音视频通信的开放标准。下面是一些基本步骤: 1. 获取用户媒体设备的权限:使用`getUserMedia`方法获取用户的摄像头和麦克风权限。 2. 创建视频元素:在HTML中创建一个`<video>`元素,用于显示摄像头的视频流。 3. 获取视频流:使用`getUserMedia`方法获取视频流,并将它绑定到视频元素上。 4. 创建RTC连接:使用`RTCPeerConnection`对象创建一个与服务器的连接。 5. 添加视频流到连接中:通过调用`addTrack`方法,将视频流添加到RTC连接中。 6. 创建数据通道:使用`createDataChannel`方法创建一个用于发送数据的通道。 7. 发送数据:通过数据通道发送数据。 8. 连接服务器:通过调用`createOffer`方法,创建一个包含本地SDP描述的offer,并通过WebSocket将其发送给服务器。 9. 处理服务器回应:服务器将返回一个包含对等连接信息的应答。使用应答中的SDP描述设置远程描述,并通过调用`setRemoteDescription`方法处理它。 10. 交换ICE候选者:通过监听`onicecandidate`事件,获取ICE候选者并发送给服务器。 11. 设置远程候选者:通过调用`addIceCandidate`方法将服务器传递的ICE候选者添加到RTC连接中。 12. 建立P2P连接:通过监听`ontrack`事件,获取远程视频流,并将其绑定到另一个`<video>`元素上,从而建立P2P连接。 请注意,WebRTC在不同的浏览器中的实现可能存在一些差异,因此需要进行一些浏览器兼容性的处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值