一对一直播软件开发中,如何进行推流?

推流环节对直播链路的影响非常大,如果推流网络不稳定,就算前期在音视频处理、编码和封装上做何种优化,用户体验都会很糟糕。因此接下来,小编就以一对一直播软件开发为例,为大家讲述下推流过程中涉及的协议、实现方案等。

更多Android高级面试合集放在github上面了(更多面试文档,项目下载,源码)
https://github.com/xiangjiana/androids
需要更多项目下载,源码的小伙伴可以点击关于我 联系我获取

一、推流的定义

推流实际上就是在把封装好的视频和音频传输到服务器的过程。换句话说,就是将现场的视频信号传到网络的过程。此外,推流这个环节对网络的要求比较高,如果网络不稳定,直播的效果就会很差,像是遇到卡顿、延时等情况。

二、推送协议种类

根据使用案例,一对一直播软件开发中,接触到的推送协议有以下几个:

1、RTMP
RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT、RTMPS、RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash平台和支持RTMP协议的流媒体之间进行音视频和数据通信。支持该协议的软件包括Adobe Media Server、Ultrant Media Server、red5等。

RTMP是目前主流的流媒体传输协议,广泛用于直播领域,可以说市面上大多数的直播平台都应用了这个协议。优点:CDN厂商基本都支持此协议,兼容性强,且在各平台上实现容易。缺点:传输成本高,在弱网环境下比较容易丢包;不支持浏览器推送;最重要的一点是RTMP是Adobe的私有协议,但是Adobe已经不再更新。

一对一直播软件开发

2、WebRTC
WebRTC,即网页即时通信的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API。它目前已经开源并且在Google、Mozilla、Opera支持下被纳入万维网联盟的W3C推荐标准。相对于一对一直播软件,它更多的是广泛应用在各种视频会议中。此协议的优点是:由于是纳入W3C标准,主流浏览器对它的支持逐渐提高,相比起RTMP来讲,它在弱网情况下的空间优化较大,而且支持点对点通信,从而降低了整体延迟。但是缺点也比较棘手,就是目前传统CDN中没有类似的服务提供。

一对一直播软件开发

3、基于UDP的私有协议
有些一对一直播软件开发商会使用UDP作为底层协议开发自己的私有协议,因为UDP在弱网环境下,通过一些定制化的调优可以达到比较好的弱网优化效果,但同样因为是私有协议也势必会有现实问题:开发成本高,往往需要自建CDN或者和CDN达成协议,另外由于兼容性较差,在面对升级时可能得不到技术支持。

三、推流实现方案举例

1、在推流传输方面全部由开发商自己搭建,花费较大,总体来说不太现实。
2、在直播软件开发中,可以和一些主流CDN厂商或者云视频服务商合作,它们往往会提供推流的“一条龙”服务。
3、大多数直播平台都会同时接入多个视频云服务提供商,这样可以做拉流线路互备,对推流后视频集群再进行优化也可提高直播的流畅性和稳定性。
以上,就是一对一直播软件开发中,一些关于推流的简单介绍

关于我

更多Android高级面试合集放在github上面了

需要的小伙伴可以点击关于我 联系我获取

非常希望和大家一起交流 , 共同进步

目前是一名程序员,不仅分享 Android开发相关知识,同时还分享技术人成长历程,包括个人总结,职场经验,面试经验等,希望能让你少走一点弯路。

原文地址:https://www.cnblogs.com/1157760522ch/p/11698487.html

时间: 2024-10-09 12:34:31

一对一直播软件开发中,如何进行推流?的相关文章

直播软件开发中连麦功能解析

在视频直播过程中,用户看到的主播直播画面其实是单向直播,视频直播软件开发的服务器接收到主播传输上的画面后,分发到各请求端,属于单向内容输出.当出现用户请求与主播连麦时,性质就发生改变,信息流传输由单向传输变为双向传输,如果有用户正在观看直播,那他接受到的信息流包括主播和连麦用户两股信息流. 为保证观看用户能及时接收到语音信息,直播平台都会使用CDN分发直播内容.也就是说用户接收的信息流线路不一定是它在请求获取信息时的那条线路,而是由CDN节点根据服务器的负载情况,重新选择最优线路进行分发.对于互

一对一直播APP开发是一大新需求

说起直播行业,一对一直播APP开发是一大新需求,为了完善软件的安全性以及内容的质量,需要借助一些CDN服务,从而帮助直播APP开发更高效. 开发一对一直播APP不仅要在功能技术上多加留意,各个方面都是要重点对待,特别是用户体验以及用户隐私安全上. 一对一直播APP开发借助的CDN服务有哪些? IP禁用 可以检测用户访问时的IP,对其进行禁止或者是放行操作.一旦出现需要处理的IP地址,管理员可以直接登录CDN服务的后台进行IP禁用或者是放行配置. 秒级禁播 这一功能主要用于用户在运营过程中,发现主

稳定在线流畅直播软件开发

小程序视频直播系统软件,小程序视频直播软件开发,小程序视频直播平台开发,小程序视频直播程序开发,小程序视频直播商城开发,小程序视频直播技术开发. 开发咨询:185-2945-7803陈生(微电同号) 小程序系统 小程序视频直播系统是一个以直播和小视频内容引爆销售的全渠道营销工具,集小视频.直播电商.全渠道裂变分销.SCRM粉丝管理.深度数据分析为一体 帮助商家一分钟开设直播或小视频内容商店,一键跨平台并发将店铺同时开到微信.微博.QQ等社交媒体,全渠道裂变分销,精准运营粉丝社群,轻松激活消费者复

IM即时通讯社交软件app开发,区块链社交直播软件开发

IM即时通讯设有数字资产钱包可进行实时发红包.转账.直播.聊天.发图.朋友圈.录像.建群.点对点聊天.加好友.相册.扫二维码等等一些有趣的功能实时上线.社交直播软件开发 Tel:前面 138中间2315后面3201 开发即时通讯APP能够带来什么 1.随时联系客户:在电子商务的发展中,客服咨询是重要的服务环节,电子商务IM即时通讯APP软件开发帮助为客服人员提供在线与消费者进行沟通互动,并且在为客服人员显示消费者在线的状态. 2.巧发商机:买家在发布产品信息的时候,能够通过系统一次性批量发布.重

对软件开发中uml建模的理解和图形整理(一)

由于uml(统一建模语言)在开发中经常会用到,特别是在软件开发中的OOAD阶段,因此要理解和使用uml显得尤为重要.在uml开始之前,咱先回顾一个OOAD.OOP的主要特征. OOAD:根据面向对象的方法学来对软件系统进行分析和设计的过程.它包括OOA 分析阶段和OOD设计阶段.其中分析阶段主要解决"What to do?"的问题,而设计阶段主要解决"How to do?"的问题.具体来说就是:在OOA分析阶段咱要做的主要工作就是建立对业务问题域的视图(建立模型).

对于软件开发中开发人员与测试人员关系的理解

在软件开发中都会有开发人员(以下简称开发)和测试人员(以下简称测试),在一些小型公司可能并没有测试,仅仅是开发兼任测试.在这里我仅针对于有专业的测试和专业的开发的项目. 每个公司应该都有考核机制,对于开发和测试的考核实际上很难量化,通常来讲大的方向就是开发所负责模块的bug数,对于测试来讲就是测出来的bug数,但这真的有效吗?这也许对开发有约束力,理论上开发是能够自己控制bug数的,如果从产生的bug数来评判开发的绩效还算有效,这样开发自然就会把代码写得更加认真.但如果根据测试测出来的bug数来

软件开发中几个基本概念

软件开发中几个基本概念 Peixu.Zhu 自己真的深切理解那些经常挂在嘴边的概念么? 抽象 Abstract 抽象的特点是仅存在于思想和理论之中,而非物理或者具体的存在.(不是指C++中的抽象类) 抽象是永存的,不会随着时空而发生变化. 具体 Concrete 具体的特点是物化的或者是具备物理形态,是真实存在的. 具体不是永存的,是随着时空而发生变化的,仅存于具体的时空之中. 具体和抽象的最大区别是是否随着时空而发生变化,即是否存在于我们的四维空间. 实体 Entity 实体是单独的个体事物(

软件开发中,什么是模块化开发?

软件产品可以被看作是由一系列具有特定功能的组件组成,作为一个完整的系统也可以被分解成一系列功能模块,这些模块之间的相互作用就形成了系统的所有功能. 所谓模块是指可组成系统的.具有某种确定独立功能的半自律性的子系统,可以通过标准的界面和其他同样的子系统按照一定的规则相互联系而构成的更加复杂的系统.每个模块的研发和改进都独立于其他模块的研发和改进,每个模块所特有的信息处理过程都被包含在模块的内部,如同一个"黑箱",但是有一个或数个通用的标准界面与系统或其他模块相互连接. 在软件的模块化开发

软件开发中的自测及C代码示例

在软件开发中,程序自测是一个永远都绕不开的话题.很多开发人员以写出有难度的代码为荣,但却不重视对自己编写的代码进行测试,这导致了最终到达客户手中的产品质量不高,bug频发,损害了公司的形象.对于一个开发人员来说,我们应该将开发和自测置于同等重要的地位,我们花在自测上的时间要不比开发少.能否对自己编写的代码进行充分的自测也是检验一个开发人员水平高低的标准之一. 自测方法 根据所编写的程序的特点,自测方法大致有如下几种: 第一种,利用模拟工具进行自测.这种方法适用于需要其他模块(尚不具备)发过来的消