序言

对个人认为要想把现场直播从头开始做出,当然是牛逼中的牛逼,薄罗藓中的薄罗藓,因为现场直播中利用到的控制技术症结十分之多,音频/音音频处置,图形处置,音频/音音频填充,CDN递送,MSN等控制技术,每两个控制技术都够学一两年的。

如果你有更快的提议或是对这首诗有反感的地方性, 请联络我, 就要进行修正,

祝我们自学融洽~非常感谢~

两个完备现场直播APP基本原理

把主持人演唱的音频,发送到伺服器,在由伺服器递送给观众们观赏。

推流端(收集、自拍处置、代码、推流)、服务器端处置(音频文件、演唱、截图、鉴黄)、MP3(拉流、音频、图形)、交互控制系统(留言板、礼品控制系统、赞)

两个完备现场直播APP同时实现业务流程

1.收集音频、音音频

AVFoundation:是用以播映和建立动态的影音新闻媒体统计数据的架构,同时提供更多Objective-CUSB来操作方式这些影音统计数据,比如说撰稿,转动,重代码

CCD:影像感应器: 用作影像收集和处置的操作方式过程,把影像转化成电脉冲。

振荡器:人声感应器: 用作人声收集和处置的操作方式过程,把人声转化成电脉冲。

音音频取样统计数据:通常都是PCM文件格式

音频取样统计数据: 通常都是YUV,或RGB文件格式,收集到的原初音音频的表面积是十分大的,需要历经填充控制技术处置来提升数据传输工作效率

2.音频处置(自拍,水印)

音频处置基本原理:因为音频终也是通过GPU,一帧一帧图形到屏幕上的,所以我们可以利用OpenGL ES,对音频帧进行各种加工,从而音频各种不同的效果,好像两个水龙头流出的水,历经若干节管道,然后流向不同的目标。

现在的各种自拍和音频添加的app都是利用GPUImage这个架构同时实现的。

音频处置的架构

GPUImage : GPUImage是两个基于OpenGL ES的两个强大的影像/音频处置架构,封装好了各种滤镜同时也可以编写自定义的滤镜,其本身内置了多达120多种常见的滤镜效果。

OpenGL:OpenGL(全写Open Graphics Library)是个定义了两个跨编程语言、跨平台的编程USB的规格,它用作三维图象(二维的亦可)。OpenGL是个专业的图形程序USB,是两个功能强大,调用方便的底层图形库。

OpenGL ES:OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。

3.音音频代码音频

音频填充代码标准:对音频进行填充(音频代码)或是解填充(音频音频)的代码控制技术,比如说MPEG,H.264,这些音频代码控制技术是填充代码音频的

MPEG:一种音频填充方式,它采用了帧间填充,仅存储连续帧之间有差别的地方性 ,从而达到较大的填充比

H.264/AVC:一种音频填充方式,采用事先预测和与MPEG中的P-B帧一样的帧预测方法填充,它可以根据需要产生适合网络情况数据传输的音频流,还有更高的填充比,有更快的图象质量

H.265/HEVC:一种音频填充方式,基于H.264,保留原来的某些控制技术,同时对一些相关的控制技术加以改进,以改善码流、代码质量、延时和算法复杂度之间的关系,达到优化设置。

音音频代码控制技术

AAC,mp3:这些属于音音频代码控制技术,填充音音频用

码率控制

多码率:观众们所处的网络情况是十分复杂的,有可能是WiFi,有可能4G、3G、甚至2G,那么怎么满足多方需求呢?多搞几条线路,根据当前网络环境自定义码率。

音频封装文件格式

TS : 一种流新闻媒体封装文件格式,流新闻媒体封装有两个好处,是不需要加载索引再播映,大大减少了首次载入的延迟,如果片子比较长,mp4文件的索引相当大,影响用户体验

FLV: 一种流新闻媒体封装文件格式,由于它形成的文件极小、加载速度极快,使得网络观赏音频文件成为可能,因此FLV文件格式成为了当今主流音频文件格式

4.推流

推流,是将收集到的音音频,音频统计数据通过流新闻媒体协议发送到流新闻媒体伺服器。

选择流新闻媒体协议

现在现场直播应用,采用RTMP协议居多,也有部分使用HLS协议。

采用RTMP协议,要看下它与流新闻媒体伺服器交互的操作方式过程,RTMP协议的默认端口是1935,采用TCP协议。并且需要了解FLV的封装文件格式。

采用HLS协议,因为涉及到切片,延时会比较大,需要了解TS流。

收集音音频统计数据

做现场直播,统计数据的来源不可缺少,是收集摄像头,麦克风的统计数据。

iOS平台上收集音音频统计数据,需要使用AVFoundation.Framework架构,从captureSession会话的回调中获取音音频,音频统计数据。

5.流新闻媒体伺服器

常用伺服器

SRS:一款国人合作开发的优秀开源流新闻媒体伺服器控制系统

BMS:也是一款流新闻媒体伺服器控制系统,但不开源,是SRS的商业版,比SRS功能更多

nginx:免费开源web伺服器,常用以配置流新闻媒体伺服器

6.拉流

现场直播协议选择:

即时性要求较高或有交互需求的可以采用RTMP,RTSP

对于有回放或跨平台需求的,推荐使用HLS

HLS:由Apple公司定义的用作动态流数据传输的协议,HLS基于HTTP协议同时实现,数据传输内容包括两部分,一是M3U8描述文件,二是TS新闻媒体文件。可同时实现流新闻媒体的现场直播和点播,主要应用在iOS控制系统

7.音频

使用相关硬件或软件对接收到的代码后的音音频统计数据进行音频,得到可以直接显示的影像/人声

涉及控制技术或协议:

通常对应的代码器都会带有相应的音频器,也有一些第三方音频插件等

8.播映

ijkplayer:两个基于FFmpeg的开源Android/iOS音频MP3

API易于集成;

编译配置可裁剪,方便控制安装包大小;

支持硬件加速音频,更加省电

简单易用,指定拉流URL,自动音频播映.

9.聊天交互

IM:(InstantMessaging)MSN:是两个动态通信控制系统,允许两人或多人使用网络动态的传递文字消息、文件、语音与音频交流.

IM在现场直播控制系统中的主要作用是同时实现观众们与主持人、观众们与观众们之间的文字交互.

第三方SDK

腾讯云:腾讯提供更多的MSNSDK,可作为现场直播的留言板

融云:两个比较常用的MSNSDK,可作为现场直播的留言板

项目代码获取

想要获取案例源代码可以加我控制技术交流群:656315826 近我在研究这一块,如果你有更快的提议或是对这首诗有反感的地方性, 请联络我, 就要进行修正,共同自学进步。

祝我们自学融洽

Android现场直播类App合作开发业务流程导出(内附源代码简述)插图

作者:_小迷糊

链接:https://www.jianshu.com/p/b0506bb8aad2

相关推荐:

用Swift编写网络层:面向协议方式

iOS新闻类App内容页控制技术探索

iOS图片浏览器(功能强大/性能优越)

Android现场直播类App合作开发业务流程导出(内附源代码简述)插图1

作者 nasiapp

在线客服
官方客服
我们将24小时内回复。
12:01
您好,有任何疑问请与我们联系!

选择聊天工具: