1.3 多媒体播放组件(Android、iOS)
Android多媒体播放组件包含MediaPlayer、MediaCodec、OMX、StageFright、AudioTrack等,下面分别进行介绍。
• MediaPlayer:播放控制。
• MediaCodec:音视频编解码。
• OMX:多媒体部分采用的编解码标准。
• StageFright:它是一个框架,替代之前的OpenCore,主要做了一个OMX层,仅仅对OpenCore的omx-component部分做了引用。StageFright是在MediaPlayerService这一层加入的,和OpenCore是并列的。StageFright在Android中是以共享库的形式存在的(libstagefright.so),其中的module——NuPlayer/AwesomePlayer可用来播放音视频。NuPlayer/AwesomePlayer提供了许多API,可以让上层的应用程序(Java/JNI)调用。
• AudiTrack:音频播放。
iOS多媒体播放组件包含VideoToolBox、AudioToolBox、AVPlayer等,下面分别进行介绍。
• VideoToolBox:它是一个底层框架,提供对硬件编码器和解码器的直接访问。它为视频压缩和解压缩提供服务,并用于CoreVideo像素缓冲区中存储的栅格之间的转换。这些服务是以会话对象的形式(压缩、解压缩和像素传输),作为核心基础(CF)类型提供的。不需要直接访问硬件编码器和解码器的应用程序都不需要直接使用VideoToolBox。
• AudioToolBox:这个框架可以将比较短的声音注册到System Sound服务上。注册到System Sound服务上的声音被称为System Sounds。它必须满足下面几个条件。
▪ 播放时间不能超过30s。
▪ 数据必须是PCM或者IMA4流格式的。
▪ 必须被打包成下面3种格式之一:Core Audio Format(.caf)、Waveform Audio(.wav)或者Audio Interchange File(.aiff)。
• AVPlayer:AVPlayer既可以用来播放音频也可以用来播放视频,在使用AVPlayer的时候,我们需要导入AVFoundation.framework框架,再引入头文件#import<AVFoundation/AVFoundation.h>。