iOS直播APP开发流程分解:
数据采集
APP开发
浏览:473 次

1.音视频处理的一般流程:
数据采集→ 数据编码→ 数据传输(流媒体服务器)→ 解码数据→ 播放显示器
1.数据收集:
视频和音频数据由摄像机和拾音器收集,并获得原始数据
涉及的技术或协议:
摄像机:CCD、CMOS
拾音器:声电转换装置(麦克风)、音频放大电路
2.数据代码:
使用相关硬件或软件对原始音频和视频数据进行编码(数字化)和处理(如音频和视频混合、打包和打包),以获得可用的音频和视频
涉及的技术或协议:
编码方式:CBR、VBR
编码格式
视频:H.265、H.264、MPEG-4等。包装容器包括TS、MKV、AVI、MP4等
音频:G.711μ、AAC、Opus等,封装有MP3、OGG、AAC等
3.数据传输:
传输编码的音频和视频数据。早期的音频和视频是通过同轴电缆传输的。IP网络发展后,IP网络被用于优化传输
涉及的技术或协议:
传输协议:RTP和RTCP、RTSP、RTMP、HTTP、HLS(HTTP直播)等
控制信令:SIP、SDP、SNMP等
4.解码数据:

使用相关硬件或软件对接收到的编码音频和视频数据进行解码,以获得可直接显示的图像/声音
涉及的技术或协议:
通常,对应的编码器会配备相应的解码器,也有一些第三方解码插件
5.回放显示:
在显示器(电视、显示器屏幕等)或扬声器(耳机、扬声器等)中显示相应的图像或声音
涉及的技术或协议:
显示器、扬声器、3D眼镜等
流媒体是通过流媒体协议将收集到的音频和视频数据发送到流媒体服务器。
目前,大多数实时App使用RTMP协议,而一些App使用HLS协议。
如果采用RTMP协议,我们应该看看RTMP协议和流媒体服务器之间的交互过程。RTMP协议的默认端口为1935,采用TCP协议。您需要知道FLV的封装格式。
使用HLS协议。因为它涉及切片,所以延迟会很大。您需要了解TS流。
对于直播来说,数据的来源是不可或缺的。它是从摄像机和麦克风收集数据。
要在iOS平台上收集音频和视频数据,您需要使用AVFoundation。框架框架,用于从captureSession会话的回调中获取音频和视频数据。
软编码是使用CPU资源来压缩音频和视频数据,而硬编码则相反。
对于软编码,FFmpeg库现在被广泛地与编码库结合使用。FFmpeg+X624编码视频数据YUV/RGB并输出H264数据,
FFmpeg+fdk_ Aac以编码音频数据PCM输出Aac数据。
将音频和视频打包成数据包。
根据选定的流媒体协议,发送相应的命令以连接到服务器。成功连接到服务器后,可以发送数据包数据。
流媒体是从流媒体服务器获取音频和视频数据。
播放器端根据URL解析使用的流媒体协议(RTMP、HLS)。

解包是解复用的过程,它将音频和视频数据从容器格式(FLV、TS)中分离出来。
解码是将获取的数据解压缩并恢复为原始数据。解码是将H264转换为YUV,将AAC转换为PCM。
软解码和硬解码可用于解码。
软解码是使用FFmpeg解码,使用CPU资源来解压缩数据。
硬解码。对于iOS平台,您可以使用VideoToolbox框架(此框架只能在iOS 8.0及以上系统中使用)
硬解码视频数据。在Android平台上,MediaCodec可以用于硬解码视频数据。
使用OpenGL渲染YUV数据并呈现视频图像。将PCM发送到设备的硬件资源中播放并生成声音。
IOS以音频队列的方式播放流音频,即使用AudioToolbox框架。
1.实时美容参考网站:https://altitudelabs.com/blog/real-time-filter/
2.直播测试地址:
HLS:香港凤凰卫视
SMTP:香港卫星电视
RSTP:互动新闻站1
3.HLS流媒体工具下载,用于处理m3u8音频和视频源
4.实时相关SDK
1.新浪云上有文档,可以阅读
2.这似乎是一笔费用,但价格不便宜,一般公司可能不会使用,但你可以试着看看,了解一下,这对学习有帮助!
3.暴风云直播https://www.baofengcloud.com/apisdk/sdk/live/iossdk.html
4.融云直播https://www.rongcloud.cn/live
5.腾讯直播SDKhttps://www.qcloud.com/solution/video.html
