自己开发搭建直播系统源码,推流分发怎么做?

[复制链接]
查看: 3065|回复: 0
发表于 2020-1-2 17:27:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

一个完整的直播过程包括:采集、处理、编码、推流、分发、解码和播放。其中,推流对整个直播流程和质量影响非常大。前端推流指:将直播中采集到的数据包从终端推到服务器的过程,是搭建直播系统源码的一大难题之一,如果想自己开发搭建直播系统,最好先把这种基础难题克服,解决方案如下:

采用命令: ffmpeg -i input -vcodec copy -acodec copy -f flv rtmp://127.0.0.1/live/cgstream0input 可以推送实时流和文件,在推荐文件时,需要加上-re。在实际操作中需要将127.0.0.1换成rtmp所在机器的ip地址。

采用命令的方式进行推流,不能任意修改时间戳信息,需要用代码进行调整,代码如下:

打开视频流,filename可以是文件名称也可以是实时流url.

创建输出上下文以及输出流,输出流的格式需要设置成flv

从输入流中读音视频包

常见的推流协议有这些:

1、 RTMP协议

该协议基于 TCP,包括 RTMP/ RTMPT/RTMPS/RTMPE 等多种变种。广泛应用于直播领域,大多数直播软件推流都会使用它,所以如果要开发直播系统源码的APP,推荐选择它,它对CDN非常友好,协议简单并且支持绝大多数CDN 厂商。

2、 WebRTC

它支持网页,本身以API的形式存在着,对主流浏览器支持程度高,弱网情况下表现良好,可以实现点对点通信因此非常适用于连麦,广泛应用于视频会议和连麦中,它最大的优点在于低延时,但缺点是不支持CDN

3、 HLS切片式传输

HLS是切片式传输,微信端常用,用它的话,用户可以在客户端自主切换码率流以获得更好的观看体验,如果要开发微信端的直播系统源码,可以考虑使用它。

CDN分发

CDN是“内容分发网络”,是由无数个服务器连成的一张网络,在音视频数据包被推流到服务器上后,服务器会通过CDN分发网络把数据包分发出去,这样在用户想要观看时,打开手机,就会自动寻找到最近最流畅的节点服务器,进行拉流工作。

使用CDN分发的好处就是,降低主服务器压力,提高系统反应速度,通过降低网络堵塞,把视频尽快送到用户眼前,它很重要,因为直播系统源码在运营后期所承受的压力是非常大的。

解码方式

推荐使用H.264/H.265编码方式+软硬结合的解码方式,H.264和H.265是压缩率很高,音质损失较小的编码压缩方式,以前大学的时候,我去蹭过隔壁后期制作班的课,他们也是使用H.264导出片子。

而软硬解码方式则是:软解码是使用CPU解码,对cpu要求高,解码出来的视频画质清晰、细节清楚,但对处理器占用率较大,对一些机型很不友好,尤其是直播系统源码的运行本身就要占用大量CPU资源,而硬解码则是使用GPU进行解码,相较而言更快些,对处理器要求更低。

声明:本文声明原创,转载请注明

​


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接


 
 
工作时间:
8:00-18:00
客服热线:
15368564009
客服微信