Audio:
-
iOS 框架
MediaPlayer 、 AudioToolbox 、 AudioUnit 、 AVFoundation 、 AVKit 、 OpenAL。其中MediaPlayer 、 AVFoundation 是基于 Objective-C/Swift 的; AudioToolBox 、 AudioUnit 和 OpenAL 是基于 C 的。
-
第三方库
FFmpeg 、 FAAC 、 FAAD2。
使用 MediaPlayer 框架的 MPMusicPlayerController 播放音频文件。 使用 AudioToolbox 框架的 System Sound Services 播放音频文件、 Audio Queue Services 录制和播放音频数据、 Audio Converter Services 进行音频转码(格式、 bit-depth 和采样率)、 Audio File Services 和 AudioFileStream 读写音频文件。 使用 AudioUnit 框架进行回音消除、音频数据录制和播放等。 使用 AVFoundation 框架的 AVAudioSession 操作音频会话、 AVAudioFile(iOS8) 读写音频文件、 AVAudioRecorder 录制音频文件、 AVAudioPlayer 和 AVPlayer 播放音频文件、 AVCaptureSession 录制音频和视频数据。 在 iOS 8 之前使用 AVFoundation 框架的 AVAssetWritter 将 PCM 音频写入 AAC LC 编码格式的音频文件,而且使用的是硬编码。 在 iOS 8 及以后可以使用 AVFoundation 框架的 AVAudioEngine 进行均衡器、混响和混音等操作,其基于底层的 AudioUnit ,但比后者更易用。 在 iOS 8 及以后可以使用 AVKit 框架的 AVPlayerController 播放音频文件或流。 使用 FAAC 将 PCM 软编码为 AAC LC。 使用 FFmpeg 或 FAAD2 将 AAC LC 软解码为 PCM 、 PCM 重采样(Resample)。
Video:
-
iOS 框架
UIKit 、 MediaPlayer 、 AVFoundation 、 AVKit 、 VideoToolBox 、 GLKit(OpenGL ES) 。其中 UIKit 、 MediaPlayer 、 AVFoundation 和 AVKit 基于 Objective-C ; VideoToolBox 和 GLKit 基于 C 的。当然, GLKit 远远不只是可以渲染视频。
-
第三方库 FFmpeg 、 x264。
使用 UIKit 框架的 UIImagePickerController 录制包含音频的视频文件、 UIVideoEditorController 可对视频进行简单编辑。 使用 MediaPlayer 框架的 MPMoviePlayerViewController(MPMoviePlayerController/MPMoviePlayer) 播放视频文件或流。 使用 AVFoundation 框架的 AVPlayer 播放视频文件或流、 AVCaptureSession 录制视频帧。 在 iOS 8 之前使用 AVFoundation 框架的 AVAssetWritter 将 YUV 数据写入 H.264 编码格式的视频文件,而且使用的是硬编码。 在 iOS 8 及以后使用 VideoToolBox 框架将 YUV 视频数据硬编码为 H.264 ,以及将 H.264 硬解码为 YUV 视频数据。 在 iOS 8 及以后可以使用 AVKit 框架的 AVPlayerController 播放视频文件或流。 使用 GLKit 将 sRGB 或 YUV 视频数据渲染输出到屏幕。 使用 FFmpeg 将 H.264 软解码为 YUV 。 使用 x264 将 YUV 视频软编码为 H.264 。