新闻资讯
自己开发搭建直播系统源码,推流分发怎么做?
一个完整的直播过程包括:采集、处理、编码、推流、分发、解码和播放。其中,推流对整个直播流程和质量影响非常大。前端推流指:将直播中采集到的数据包从终端推到服务器的过程,是搭建直播系统源码的一大难题之一,如果想自己开发搭建直播系统,最好先把这种基础难题克服,解决方案如下:
采用命令: 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进行解码,相较而言更快些,对处理器要求更低。
原文链接:https://www.douban.com/note/747701156/
回复列表