iOS音视频播放(Audio Unit播放音频+OpenGL ES绘制视频)

前言

系文章:
使用VideoToolbox硬编码H.264
使用VideoToolbox硬解码H.264
使用AudioToolbox编码AAC
使用AudioToolbox播放AAC
HLS点播实现(H.264和AAC码流)
HLS推流的落实(iOS和OS
X系统)
iOS在线音频流播放
Audio Unit播放PCM文件
Audio
Unit录音(播放伴奏+耳返)
Audio
Unit播放aac/m4a/mp3等文件
Audio
Unit和ExtendedAudioFile播放音频
AUGraph结合RemoteI/O Unit与Mixer
Unit

方的章介绍了音视频信息的加载与剖析,在另外的《OpenGLES文集》啊详细介绍了OpenGL如何绘制图像。
这次做Audio Unit和OpenGL
ES,分别加载多媒体文件的节拍和视频信息并播放。

下面是举行出来以后的功力图:

Audio Unit & OpenGL ES.gif

前段时间,看到了Tikitoo的有什么样大学生适用的app应用?的享受,我一直惦念理一下团结之手机app,同时也为大家提供一些参照。作为一个智能手机的使用者,如果只有是独的故来玩报道,未免太浪费了。Tikitoo同桌外列举的应用还是因在Android平台及之,在iOS平台达成体验并不相同。他说之正确性,作为同名叫大学生,除了了解专业知识,还有再多的询问自己感兴趣之东西,自我提升和自我管理也是勿克差失的。

正文

如果你觉得我的文章还不错,欢迎大家点个赞!也欢迎大家继续关注我,后续我会推送更多的app的使用技巧。

一体化思路

demo包括三良有,分别是资源加载板播放视频播放

  • 资源加载:是因此AVURLAsset加载资源文件,再创资源读取器AVAssetReader,然后附加音频读取接口mReaderAudioTrackOutput同视频读取接口mReaderVideoTrackOutput至资源读取器。
  • 音频播放
    :从音频读取接口mReaderAudioTrackOutput加载音频信息获得CMSampleBuffer,用方法CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer把拍子数据变动成AudioBufferList格式,再采用AudioUnit播放;
  • 视频播放:从视频读取接口mReaderVideoTrackOutput加载视频信息获取CMSampleBuffer,用方法CMSampleBufferGetImageBuffer把视频数据变动成CVPixelBufferRef格式,再用OpenGL
    ES绘制图像;

    整流程图

一直以来,阅读都是维系最遥远之喜好,所以看软件为是充分重要之。

现实分析


1、资源加载

资源加载用底凡AVFoundation供的道,先加载音视频的准则信息。
然后初始化好音视频的格式信息outputSettingsoutputSettingsAVAssetReaderTrackOutput初始化的必要条件之一。

顾音轨和声道的界别,比如说在ktv唱歌的下,通常伴奏是一个音轨,录到的人声是一个音轨,最后播放的时刻进行夹。而声道我们常因此声道数的定义,指的凡响播放时之音箱数量。
音轨=AudioTrack
声道=AudioChannel

应用分类 App名称
阅读学习 收趣云书签、Pocket、小说阅读器、小说阅读器、QQ阅读、中国大学Mooc、TED
读书写作 简书、知乎、马克文档、印象笔记、MindNode
生活方式 网易严选、厨房故事、好好住、闲鱼、Timi记账
旅行导航 考拉电子狗、高铁管家、巴士管家、滴滴出行、Airbnb、小猪民宿
安全中心 Google Authentictor、网易将军令、百度安全中心、新浪微盾、QQ安全中心
影音娱乐 酷我音乐、网易云音乐、RushPlayer、Teeevo、Mark
工作效率 滴答清单、网易邮箱大师、Pushbullet、快贴、Clips、Copy
资讯浏览 中关村在线、IT之家、网易新闻
手机摄影 米汤姐的相馆、VSCO、POTO、Color Accent、Snapseed、Foodie
搞笑娱乐 花熊、百思不得姐、糗事百科
实用工具 小历、DataMan、StoCard
2、音频播放

旋律播放效果因此的凡Audio Unit,其中的RemoteIO
Unit只能承受PCM数据,故而要求读取出来的旋律信息务必是PCM格式的,并且安装给Audio
Unit的格式需要同outputSettings一致。


3、视频播放

视频播放其实就算是图像信息的绘图,从资源我们得读取到图像信息,再将图像传给已经封装好的LYOpenGLView类,就可以绘制图像。图像信息占内存较为明确,需要专注内存的回收。

阅读学习

收趣云书签:收趣的功能其实很简单,无论你在哪个App上看到感兴趣的内容,    
          不必马上读完,把它丢进收趣,有空或者用得着的时候翻出来再看。
Pocket  :Pocket的主要功能就是将你要阅读或者一时没有读完的网页标记下来,接着同步到服务器端,
        然后你就可以在不同的设备上阅读。
小说阅读器:就是云帆小说阅读器的手机端,可以搜索小说,然后缓存全部章节,离线阅读
QQ阅读   :腾讯出品的阅读器,可以付费包月,同步阅读记录。
中国大学Mooc:网易和中国教育出版社联合出品的在线慕课,全部是名校提供的精品课程
TED     :大名鼎鼎的TED演讲官方APP

收趣云书签、Pocket、小说阅读器

QQ阅读、中国大学Mooc、TED

有人会问我,为什么会有收趣云书签和Pocket稍后阅读的同类软件,我会告诉你,因为收趣云书签是最近在国内出来的,手机端不会出现太大的问题,各大浏览器都没有插件。而Pocket已经运营多年了,各种浏览器插件支持都比较好,我都用Pocket保存好了,然后再同步到收趣云书签。

相见的题目

翻阅做

简    书:是一个将 [写作] 与 [阅读] 整合在一起的网络产品。旨在为写作者打造最优秀的写作软件,
     为阅读者打造最优雅的阅读社区,主要是支持手机端写作。
知    乎:知乎是一个真实的网络问答社区,氛围比较好,精英和大神比较多,回答也比较精准、专业。
马克文档:是一个使用 markdown 语法的纯文本编辑器。他能让你轻松的编辑文档。
印象笔记:主要用来保存自己的很多文章,用来同步使用。
MindNode:凭借其简介的风格与人性化的操作,它成为不少朋友绘制[思维脑图]的好帮手

简书、马克文档、印象笔记

MindNode、知乎

简书和知乎自然是少不了的,作为一个大学生,总归要学习点各种知识的!

1、确定Audio Unit音频格式

尝试加载资源文件的音频格式并安装给Audio Unit,但坐Audio
Unit无法接受资源文件的格式(大多数文书之音频文件格式为AAC)。
缓解方案是一直设置读取的音频格式信息呢PCM,并且手动初始化ASBD,保证一定量端的格式一致。
如下,是资源文件的韵律读取格式和手动初始化的格式:

    NSMutableDictionary *outputSettings = [NSMutableDictionary dictionary];
    [outputSettings setObject:@(kAudioFormatLinearPCM) forKey:AVFormatIDKey];
    [outputSettings setObject:@(16) forKey:AVLinearPCMBitDepthKey];
    [outputSettings setObject:@(NO) forKey:AVLinearPCMIsBigEndianKey];
    [outputSettings setObject:@(NO) forKey:AVLinearPCMIsFloatKey];
    [outputSettings setObject:@(YES) forKey:AVLinearPCMIsNonInterleaved];
    [outputSettings setObject:@(44100.0) forKey:AVSampleRateKey];
    [outputSettings setObject:@(1) forKey:AVNumberOfChannelsKey];

    AudioStreamBasicDescription inputFormat;
    inputFormat.mSampleRate = 44100;
    inputFormat.mFormatID = kAudioFormatLinearPCM;
    inputFormat.mFormatFlags = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsNonInterleaved;
    inputFormat.mFramesPerPacket = 1;
    inputFormat.mChannelsPerFrame = 1;
    inputFormat.mBytesPerPacket = 2;
    inputFormat.mBytesPerFrame = 2;
    inputFormat.mBitsPerChannel = 16;
    self.fileFormat = inputFormat;

活方法

网易严选:网易出品的电商平台,产品大多是各[大品牌]的[代工厂]与网易合作出品。
厨房故事:不仅是一款[食谱]应用,它更像是一本设计精美的[美食杂志],虽来自德国,
        但却对中文有着很好的支持
好好住  :发现真实好家,结识高能屋主,提高居住[审美],寻找[实用]方案。
闲鱼    :阿里巴巴旗下的二手交易平台,我用来淘一些[二手手机]用来收藏。
Timi记账:精美独特的[时间轴]记账。换个角度记录时光。

网易严选、厨房故事、好好住

Timi记账、闲鱼

网易严选一直都是我必备的,大到床上四件套,小到文具和水杯,主要就是因为他们的东西很符合我简约、朴素但是不简单的风格。

2、音视频同步

demo中是个别单变量self.mAudioTimeStampself.mVideoTimeStamp,分别代表音频播放以及视频播放的日子穿。
其中音频播放进度由Audio
Unit驱动,视频播放进度由CADisplayLink驱动,为了保视频进度不跳音频进度,添加了if (self.mVideoTimeStamp < self.mAudioTimeStamp)的判断。
唯独当模拟器运行的下,视频的辨析比音频解析的速度有点博,造成较为明确的不齐。
以真机运行的当儿,这种气象来拨云见日的精益求精。
目前尚并未找到较好的合方式,如果发了解要指教。

旅行导航

考拉电子狗:App Store中国区电子狗榜单第一,用来查看[电子狗]和路程距离。
高铁管家:提供火车票查询服务、火车票购买服务的软APP
巴士管家:用于购买汽车票和用车在线预订的软件
滴滴出行:滴滴出行是涵盖出租车、专车、快车、顺风车、代驾及大巴等多项业务在内的一站式出行平台
Airbnb:一家联系旅游人士和家有空房出租的房主的服务型网站,它可以为用户提供多样的住宿信息
小猪民宿:小猪为用户提供高性价比的*短租*房、日租房住宿服务

考拉电子狗、高铁管家、巴士管家

滴滴出行、 Airbnb、小猪民宿

Airbnb是用来预定全球的民宿,而小猪则是用来在国内的,还有景点推荐。

总结

正文没有扩大更多的节拍和视频知识,通过整合三个部分文化,组成核心的音视频播放流程。
由于时间由,所做的技巧预研无法好好,代码没有那个好的打磨。
demo更多是执行某些想法,如果代码有问题,恳请指出,帮助而自他丢掉踩一些坑。

安然基本

Google Authenticator:Google Authenticator通过两个验证步骤,在登录时为用户的帐号提供    
                      一层额外的安全保护
网易将军令:用于保护网易通行证帐号和网易经销商通行证帐号
百度安全中心:用来保护百度账号的安全中心
新浪微盾:用来登录新浪微博的二次验证和快速修改密码
QQ安全中心:可以管理您的帐号密码、密保,为Q币、游戏装备、QQ开启保护,还可以获得最新的安全资讯。
1Password:是管理网站登录和敏感信息的最好应用,它拥有友好的用户界面,
           可以在任何时刻在任何设备上使用,包括笔记本电脑、手机甚至智能手表Apple Watch上。

Google Authenticator、网易将军令、百度安全中心

初浪微盾、QQ安全基本、

有人肯定会很好奇我为什么会提这个,我会告诉你,这个真的很重要。其实,保护自己的各种账号真的很简单,就是绑定手机、邮箱和开启二次验证。1Password是一款非常优秀的密码管理器

影音娱乐

酷我音乐:酷我音乐盒是一款融歌曲和MV搜索、在线播放、同步歌词为一体的音乐聚合播放器,  
        最重要的是下载高品质音乐不要钱,除了有版权限制的除外。
网易云音乐:业界有良心的音乐app
RushPlayer:可以播放大部分格式的音频与视频,最重要的是可以收看全球的
            各大[电视]、[广播]和[电台]的[直播]
TeeEvo:一个用来追美剧,一个用来追电影的app,不用翻墙
Mark: Mark是一款电影清单应用。数百个精选影单,帮你筛选好电影,记录想看、已看、喜欢的电影。

酷我音乐、网易云音乐、RushPlayer

Teeevo、Mark

我最喜欢的app就是网易云音乐、 Teeevo RushPlayer
Teeevo用来追剧,
RushPlayer用来看电视直播,我不喜欢用手机看本地视频,所以多数以在线视频为主,用iPad来
RushPlayer看电视直播,那真是爽,可以看国外的高清电视直播

工作效率

滴答清单:滴答清单是一款帮助记录工作、任务,规划时间的应用,易用、轻量、功能完整
网易邮箱大师Pro:全面支持网易邮箱、QQ邮箱、 Gmail、Hotmail、雅虎邮箱、139邮箱、新浪邮箱、
               各类企业邮箱和高校邮箱。
Pushbullet:Pushbullet 是一个强大免费的跨平台消息推送工具,支持 Android、iOS、Windows、Mac 
快贴:快贴是一款 iOS、Android、OS X 间的云剪贴板应用,只需在一台设备上复制,其他设备就可以粘贴。
Clips:同时支持通知中心小部件、Safari 扩展和第三方键盘的 Clips,是一款iOS 8 新晋的剪贴板增强工具
Copy:常用语复制助手,你可以把你常用的词语保存在app里,需要时去通知栏里复制,然后粘贴。

滴答清单、网易邮箱大师Pro、Pushbullet

快贴、Clips、Copy

滴答清单是我最欢的 GTD应用,既有清单又有任务,这点很重要。网易邮箱大师Pro是¥1购买的,支持各种邮箱,最重要可以不翻墙使用Google邮箱。
Pushbullet
是一个用来在多个客户端推送消息的应用,可以实现PC端复制手机端粘贴功能。
*Copy *是! *KollWay
*http://www.kollway.com/ 出品的用来把你常用的词语保存在app里,需要时去通知栏里复制,然后粘贴。粘贴复制的利器

讯浏览

中关村在线:中关村在线 中国第一科技门户,是一家资讯覆盖全国并定位于销售促进型的IT互动门户
IT之家:IT之家是业内领先的即时IT资讯和数码产品类网站
网易新闻:网易新闻是网易倾力打造的精品应用,已然成为国内第一新闻客户端,因体验最流畅、
        新闻最快速、[评论最犀利]而备受推崇。

中关村在线、IT之家、网易新闻

我是一个学计算机的学生,所以我会更多的关注关于互联网的内容,加上一个伪文艺,也会关注一些文字的内容,现在是互联网时代,必须懂一些互联网的知识才行啊!

手机摄像

  米汤姐的相馆:发图利器.拼长图,切宫格图,数十张图片拼接的利器
  VSCO:VSCO是时下一款非常流行的强大的摄影App,包含了相机拍照、照片编辑和照片分享三大功能。
  POTO:一股浓浓的文艺工具风就铺面而来,恰如其分地展示图片的另一个视角,文艺干净
  Color Accent:帮助您转换黑白图片同时保持选定的颜色不变。只需装简单的点击,
                就可将图片处理成极具视觉冲击的颜色效果。
  Snapseed:Google出品的是一款多功能,高精度的照片处理软件,被誉为是移动平台上的[Photoshop],
                   让你的相片别具一格。
  Foodie:Foodie这款相机提供的各式功能只为一个目标:让你的食物拍起来更鲜美 ,有[LINE]提供。

米汤姐的相馆、VSCO、POTO

Color Accent、Snapseed、Foodie

其实这个分类的应用有很多,我比较常用的就是这几个。米汤姐的相馆是我最喜欢的拼长图的软件,绝对比同类软件优秀。具体的功能有很多,我就不介绍了。*
Color
Accent*帮助您转换黑白图片同时保持选定的颜色不变。只需装简单的点击,就可将图片处理成极具视觉冲击的颜色效果,
Foodie可以让你拍出更好看的照片和视频

整治笑娱乐

花熊:花熊App一个毫无节操的名字,没有表情包,怎么斗图呢?
百思不得姐:一个在线发布和分享内涵段子、冷笑话,搞笑图片,成人笑话的热门社区
糗事百科:是以糗友真实糗事为主题的笑话网站,话题轻松休闲

花熊、百思不得姐、糗事百科

时下最流行就是表情包了,手里没有几个像样的表情图,怎么跟别人斗呢?

实用工具

小历:以在通知中心显示农历的日历应用,支持 [ 3D Touch] 和 [watchOS 2],备受欢迎的 Timy 日历
DataMan:一款手机数据流量监控软件,是对抗流量套餐超标的最佳武器,一眼即可了解你的流量状况
Stocard(许多卡):是时候对会员卡说再见了,你需要的是电子卡包,支持国内外大部分会员卡,也可以自定义会员卡

小历、DataMan、StoCard

小历是一个支持中国农历的小软件,在通知栏显示农历。
DataMan是一个小清新的统计流量的app,最爆了的功能是可以自动统计日间和夜间流量和自动结算本月未用完流量统计到下个月。

小结:整理了一些单钟头,在连年行使智能手机的经过中,我意识了广大题材,就是有人向没利用各种app的各种功能,或者说过度倚重手机社交软件,我的一个同室,每天真正是痴迷于手机社交软件,每天瞅他,除了和别人聊天,就是聊语音。我弗思量说过多鸡汤话,我一直还期待我们大学生能够更好地读书运用智能手机App,能够提升自己与治本我。