iOS音视频开发闲谈(理论步骤)

MY BLOG--->

iOS音视频开发闲谈(理论步骤)

为什么要写这篇文章?

  1. 自己对知识的积累
  2. 想给初学者一点入门时思想上的一点指导吧(我也是初学者)

什么人适合看本文?

  1. 你并没有掌握音视频开发(废话,哈哈哈~)
  2. 要进行iOS端音视频开发的人

正文

种类 音视频开发, 目前的话拥有此需求的APP大概分为两类吧(我自己分的哈哈哈~):1,各种主播类APP 2,智能家居. 我属于后者.

1.iOS音视频开发做什么?

音视频开发, 我的理解就是画画,加"放歌". 两个元素: 音频和视频

画什么画?

画每一帧画面

放什么歌?

放服务器传过来的音频数据

至于画面的是美女主播在跳舞还是智能摄像头拍摄到的家里的时时画面, 音频数据是女主播的歌声还是家里宠物的叫声,爱是啥是啥~

2.数据哪来?

做音视频开发第一个问题就是, 得有数据. 数据是从美女主播的手机采集到的数据? 数据是智能摄像头采集到的数据? 爱谁谁~ 客户端只和服务器打交道(不全是~). 如果是做美女主播APP的话有很多现成的框架, 如果是做智能家电类的框架也有....废话好多. 其实我想说的是, 框架其实是给我们封装了些功能, 美女直播智能家电直播都是讲究实时的, 所有就要一直连接,长连接嘛.

实时音视频开发都是要长连接的. 它属于音视频开发3大步骤之一
传输层
我了解到的音视频开发的步骤有:1.传输层 2. 编解码 3.渲染/输出 (我是这么认为的哈)

  1. 传输层解: 决数据哪来的问题 (GCDAsyncSocket, 具体业务逻辑可以再封装一层)
  2. 编解码: 负责数据还原或压缩问题 (用ffmpeg或者用手机硬解)
  3. 渲染/输入: 负责渲染视频数据,和将音频数据传给手机麦克风或者耳机进行播放(画面渲染就是OpenGL了, 音频输出就是Audio Unit)

3.什么数据?

tlvP.png

服务器数据过来了,....好我们的口粮问题解决了. 那我们就要看看过来的是什么口粮, 一般都是"封装格式", 也许大家对什么AAC,H.264这些相关名词有所耳闻, 服务器过来的音视频数据应该音频就是AAC了,视频就是H.264了. 其实不是的.

网络传输TCP传输一个包大小最大是有限制的. 为什么是H.264了?H.264是视频的压缩数据. 最开始我们主播的手机摄像头或者我们的智能摄像机采集到的视频数据是YUV格式的, "一张"画面的YUV数据相当大, 所以得对其压缩然后压成了H.264,哎压缩这个步骤就是编码了.同样的道理音频最开始采集到的是PCM(音频采样数据)一压缩AAC数据.

咦好像压缩了的数据小了, 那我们从服务器拿到应该就是AAC和H.264了嘛~为什么不是?

  1. 是什么数据? 是音频数据? 是视频数据? ----没法区分不是
  2. 多大数据啊? ----------不知道啊.

所以从服务器过来的数据一般都是遵循了这么一个协议的数据----TLV

Type ----音频?视频?

Length-----音频多长? 视频多长?

Value ---- 音频数据? 视频数据?

一开始客户端(iOS Android)就和服务器开会,说:"以后你们收到数据前面多少字节到多少字节那是数据的type, 多少字节到多少字节说的是数据的长度, 最后就是你们要的数据AAC或者H.264"

4.解码

服务器数据过来了, 又晓得是啥子数据了. 下一步怎么办, 解码. 前面说了原始采集到的数据音频也好视频也好很大(主要还是视频超级大).

但是勒~

手机说:"你要我画画面,你的给我要的数据, 我要RGB颜色数据"

"卧槽, 不是H.264我就算看不懂, 根据上下文也知道不是, 本以为你会说YUV,因为最开始采集到的就是YUV嘛, 没想到突然搞出来一个RGB"

是的就是RGB, 我们看到的电脑呀,手机呀, 在屏幕上看到的图片呀文字呀, 都是许多由一个一个的像素拼接起来的, 每一个像素点的数据就是RGB, 所以你看到的图片文字,你在你手机电脑上看到的任何东西都是许多


nvRegImage.png

"红色" "绿色" "蓝色"

"红色" "绿色" "蓝色"

"红色" "绿色" "蓝色"

"红色" "绿色" "蓝色"

组成的.

那RGB和YUV的关系是什么呢? RGB和YUV都可以通过对方,进行一个矩阵计算的得到, RGB通过一个矩阵计算可以生成YUV, YUV可以通过一个矩阵计算生成RGB.

所以手机说他要YUV或者RGB都没问题.可以计算得到的.

那怎么得到YUV了? 答:解码H.264得到的结果就是YUV了.
到底怎么解了? 有软解和硬解. 所谓软解就是程序根据H.264数据算出YUV数据, 硬解也是程序根据H.264算出YUV.

"我擦嘞~ 搞毛线啊....都是程序根据H.264算出YUV"

虽然都是"程序根据H.264算出YUV", 但是是不同的:

硬解是苹果手机或者安卓手机自身存在"硬解模块", 程序是跑在"硬解模块里的". 都有了专门的"模块"了,专业的那必须是快准狠.

软解就是FFmpeg喽, 是让CPU计算的. 消耗CPU的资源.

一个是CPU算,一个是"硬解模块"算.

总之我们拿到服务器过来的数据,抠出TLV中的V后, 就解码,用啥解自己看着办.
音频数据一个道理AAC--->PCM, 手机只认PCM

5.渲染输出

解码后我们就得到了, YUV或者AAC了. 我拿着这些数据下一步怎么搞了?

视频当然是渲染了.

啥子是渲染, 答:Render;哈哈哈~开个玩笑....

我也不查百度了, 我口说. 到这一步了我得到原始数据YUV, 其实这个数据哈,就是一张图片了. 其实视频就是很多图片拼起来的. 我们要干嘛我做音视频开发啊, 我们要做播放器啊. ok....现在画面数据有了, 我们做播放器开发下一步干嘛? "找个地方把画面展现出来", 其实渲染就是画画. 画画总得有地方吧,画在哪???-----画在一个view上, 这个View就是renderView. 至于这个View在哪个控制器上,爱谁谁...

怎么画? 答:用OpenGL画. 说到OpenGL这是很大的技术. 但是不用怕. 我们就只要画个视频画面, 一个平面矩形. 难度不大.

渲染一句话就是: OpenGL将YUV画到renderView上的过程.

音频怎么播?

我们拿到网络过来的数据抠出TLV中的AAC数据,然后给audio unit , 然后audio unit 解码得到PCM然后拿给了硬件,最后硬件播放.

"简单吧...."

真正要用代码说话的时候,我负责的告诉你上面的每句话, 所含有的代码量都是挺可观的........哈哈哈哈哈哈哈哈哈,笑着笑着就哭了.....哭.........

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容