iOS应用程序开发方法与实践-第08章_第1页
iOS应用程序开发方法与实践-第08章_第2页
iOS应用程序开发方法与实践-第08章_第3页
iOS应用程序开发方法与实践-第08章_第4页
iOS应用程序开发方法与实践-第08章_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8章

多媒体本章内容概要了解视频、音频的基本知识与常用术语。掌握播放音频的方法,以及这些方法的优缺点与适用范围。掌握录音以及控制音乐播放的方法。掌握视频的播放与控制方法。掌握如何播放系统媒体库中的音乐与视频。掌握使用相机进行拍照与摄像的要点,以及如何将图像与视频保存到媒体库。iOS应用程序开发方法与实践28.1音频与视频基础容器与编码音频编码格式介绍采样率与比特率音频工具afconvert与afinfoiOS应用程序开发方法与实践38.1.1容器与编码文件又称作容器,包含视频数据、音频数据与其他信息(脚本、版权信息、歌词、字幕等等)。文件中的视频数据与音频数据可以采用不同的编码(算法)保存。播放媒体文件时,需要对视频数据与音频数据进行对应的解码。iOS应用程序开发方法与实践48.1.2音频编码格式介绍常用的音频编码格式:AAC、HE-AAC、ALAC、IMA4、AMR、iLBC、LPCM、G.711、MP3等。未压缩的LPCM原始音频数据与压缩的IMA4音频数据,可以同时硬解码播放。对于MP3、AAC、ALAC音频数据,同一时间只可以对其中一个音频数据进行硬解码。iOS应用程序开发方法与实践58.1.3采样率与比特率声音是具有能量的波,它是连续的模拟信号。需要以数字形式保存和传输模拟信号中包含的数据,则必须进行模数转换。进行模数转换需要进行采样、量化与编码三个步骤。采样:在时间上将连续的模拟信号离散化。量化:用有限个幅度值近似原有的连续变化的幅度值,从而把模拟信号的连续幅度变为有限数量的有一定间隔的离散值。编码:按照一定的规约,将量化后的离散值用二进制数表示出来。iOS应用程序开发方法与实践68.1.3采样率与比特率iOS应用程序开发方法与实践78.1.3采样率与比特率采样率:每秒钟从连续信号中提取并组成离散信号的采样个数。单位:赫兹(Hz)。对于CD音频来说,其采样率为44100Hz。采样周期(采样时间):采样率的倒数,它是每次采样之间的时间间隔。比特率(位速率):单位时间内所使用的二进制位数。单位:位每秒(bps)。比特率越高,越贴近真实数据,文件越大;比特率越低,失真约大,文件越小。iOS应用程序开发方法与实践88.1.4音频工具afconvert与afinfoCAF(CoreAudioFile)格式的音频文件在iOS开发中比较常用。CAF文件能够包含iPhone支持的所有编码方式压缩的数据。afconvert命令可以将常见的WAV、MP3、AAC、M4A等音频文件转换为CAF格式。afinfo命令可以查看音频文件信息,如容器格式、音频数据编码格式、比特率、采样率等等。iOS应用程序开发方法与实践98.2音频iOSSDK提供了多种播放音频的方式:SystemAudioServicesAVAudioPlayerMPMusicPlayerControllerOpenALiOS应用程序开发方法与实践108.2音频使用SystemAudioServices:播放方式最简单。能够实现震动效果。音频数据必须来自于程序包内的文件,或是来自于服务器的音频流,不能播放其他位置的音频。音频长度不能超过30秒。音频的容器格式只能是CAF、AIF或者WAV文件,编码格式只能为LPCM或者IMA4。不能对音频的播放进行控制,即只能播放,不能暂停、快进、回退等。

iOS应用程序开发方法与实践118.2音频使用AudioPlayer(AVAudioPlayer):播放方式相对简单。可以播放更长的音频。允许对播放进行各种控制(暂停、快进回退、调整音量、指定播放位置、循环次数等等)。允许同时播放多个音频。支持的格式丰富(MP3、AAC、ALAC、AIFF、WAV)。能够处理中断(例如播放音乐时有电话呼入)。音频数据必须来自于程序包内的文件,或是来自于服务器的音频流,不能播放其他位置的音频。iOS应用程序开发方法与实践128.2音频使用MediaPlayer框架:播放系统音乐库中的音乐。使用AudioRecorder:可以录制音频。使用OpenAL:可以真实表现3D场景音效,并控制立体声的方位。请根据应用程序的具体场景和需要进行选取。iOS应用程序开发方法与实践138.2.1使用SystemAudioServices播放声音使用SystemAudioServices播放声音的主要步骤:添加AudioToolbox框架,并在必要的代码处引用其头文件。根据音频文件URL,生成系统声音ID。根据ID播放声音。释放系统声音ID。参见教材“案例:播放简短音效与实现震动”。iOS应用程序开发方法与实践148.2.3使用AudioPlayer播放与控制声音使用AVAudioPlayer播放声音的主要步骤:添加AVFoundation框架,并在必要的代码处引用其头文件。初始化新的AVAudioPlayer对象,指定音频文件的URL或者数据。设置委托,需要实现AVAudioPlayerDelegate协议。AVAudioPlayer对象会在播放完成时、解码出错时、以及中断开始与结束时向委托对象发出通知。获取音频信息,并控制音频播放。释放AVAudioPlayer对象。参见教材“案例:播放较长的声音”。iOS应用程序开发方法与实践158.2.5使用AudioRecorder录制声音使用AVAudioRecorder录制音频的主要步骤:添加AVFoundation框架与CoreAudio框架,并引用其头文件。创建一个字典,定义录音参数,例如采样率、通道数以及编码格式等。初始化AVAudioRecorder对象,指定生成的文件URL以及录音参数字典。设置委托,需要实现AVAudioRecorderDelegate协议。AVAudioRecorder对象会在录制完成时、编码出错时、以及中断开始与结束时向委托对象发出通知。控制录音过程,如准备录音、开始或恢复录音、暂停、停止录音等;或是查询录音信息,如是否正在录制、录制时间等。释放AVAudioRecorder对象。参见教材“案例:实现带录音功能的音乐播放机”。iOS应用程序开发方法与实践168.2.7使用MusicPlayerController播放媒体库音乐MediaPlayer框架允许应用程序访问媒体库。iOS应用程序开发方法与实践178.2.7MediaPlayer框架中重要的类MPMediaLibrary:表示设备媒体库,包含所有媒体项的状态信息,可以从中获取和查询媒体项与播放列表。MPMediaEntity:表示设备媒体库中的一个实体,保存了各种媒体信息,例如艺术家名称、专辑名称、歌曲名称、音轨号等等。MPMediaItem与MPMediaItemCollection是该类的子类。MPMediaItem:表示媒体库中的某个媒体项(例如音乐、视频),它具有唯一标识。MPMediaItemCollection:表示若干媒体项的有序集合。iOS应用程序开发方法与实践188.2.7MediaPlayer框架中重要的类MPMediaPlaylist:表示媒体库中的一个播放列表。MPMediaPlaylist类继承自MPMediaItemCollection类。MPMediaQuery:用于从媒体库中查询媒体项。该对象包含了查询结果分组方式,以及用于查询的若干条件谓词。满足条件的媒体项会保存在MPMediaItemCollection对象中。MPMusicPlayerController:用于播放媒体项队列,可以对播放进行控制。该类不是视图控制器类。MPMediaPickerController:一个视图控制器类,其视图就是iOS中的音乐程序的歌曲标签页。该类继承自UIViewController类。iOS应用程序开发方法与实践198.2.7使用MediaPlayer框架播放媒体库音乐使用MediaPlayer框架访问媒体库的主要步骤:创建MPMediaPickerController视图控制器,并设置选取类型。获取MPMusicPlayerController对象,可以是系统全局媒体播放器或者应用程序媒体播放器。创建一个实现MPMediaPickerControllerDelegate协议的委托类。委托类的方法会在用户完成选择时或者取消选择时调用。设置MPMediaPickerController视图控制器的委托对象。将MPMediaPickerController视图控制器以模式方式显示。释放MPMediaPickerController视图控制器。参见教材“案例:播放媒体库音乐”。iOS应用程序开发方法与实践208.3视频使用MoviePlayerController播放视频使用MoviePlayer视图控制器播放视频使用相机进行拍照与摄像iOS应用程序开发方法与实践218.3.1使用MoviePlayerController播放视频MPMoviePlayerController对象能够播放存放在本地与网络上的视频与音频文件。包含一个用于在其中播放视频的视图,视频视图中提供了播放控制栏,能够对视频进行暂停、快进、回退、停止、全屏播放等操作。虽然MPMoviePlayerController类的名字中含有Controller,但它不是视图控制器,而只是一个用于控制媒体播放的类。iOS应用程序开发方法与实践228.3.1使用MoviePlayerController播放视频使用MPMoviePlayerController类播放视频的主要步骤:添加MediaPlayer框架,并在必要的代码处引用其头文件。初始化MPMoviePlayerController对象,指定视频文件的URL。在通知中心中注册通知,用于响应特定的事件,如媒体播放完毕、进入全屏播放模式、播放的媒体发生更改时等。设置视图的尺寸,并将其视频视图添加到视图树中。获取视频的信息,并对视频进行播放与控制。释放MPMoviePlayerController对象。参见教材“案例:实现视频的播放”。iOS应用程序开发方法与实践238.3.3使用MoviePlayer视图控制器播放视频MPMoviePlayerViewController是一个视图控制器类,内部管理着一个MPMoviePlayerController类的对象,并简单地以全屏方式播放视频内容。使用MPMoviePlayerViewController播放视频的主要步骤:添加MediaPlayer框架并引用头文件。初始化MPMoviePlayerViewController类的对象,并指定视频文件的URL。将其添加到其他容器视图控制器中,或者以模式方式显示。释放MPMoviePlayerViewController对象。参见教材“案例:使用MPMoviePlayerViewController播放视频”。iOS应用程序开发方法与实践248.3.5使用相机进行拍照与摄像图像选取控制器UIImagePickerController类可以使用iOS设备的相机进行拍照或摄像,或是获取图像库中的图片。UIImagePickerController类继承自UINavigationController类,因此它是一个导航栏控制器。iOS应用程序开发方法与实践258.3.5使用相机进行拍照与摄像使用图像选取控制器进行拍照、摄像与浏览媒体的主要步骤:检查媒体来源模式是否可用。+(BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论