Android开发iOS-FFmpeg音视频开发音视频技术

AVFoundation 框架介绍

2019-10-30  本文已影响0人  sprint

01 前言

大家好,从今天开始我们正式进入 iOS 专题。

本文是 iOS/Android 音视频开发专题 第九篇,该专题中项目代码将在 Github 进行托管,你可在微信公众号(GeekDev)后台回复 资料 获取项目地址。

本期内容:

02 AVFoundation 概述

AVFoundation 是 iOS 中多媒体框架之一,基于 Object-C/Swift 接口,可以用来播放,编辑,重新编码音视频文件。我们可以通过 AVCaptureSession 输入设备实时捕捉处理图像信息。下面是 iOS 系统中的 AVFoundation 媒体架构:

AVFoundation

通常,我们使用高级接口就可以满足我们的大部分需求。

另外,你可能还听说过 VideoToolbox , AudioToolbox ,CoreMedia , CoreVideo, 这些框架是 iOS 为开发提供的 C 语言接口,AVFoundation 底层技术就是使用的这些 C 语言框架。

像 VideoToolbox 我们做直播类项目时,通常会使用 VideoToolbox 对视频流进行 h264 编码。使用 VideoToolbox 我们可以更加精细的控制编码数。AVFoundation 一般用于对媒体文件(Asset)进行编辑,在短视频场景下用的较多。

03 AVFoundation 常用类

04 AVFoundation 采集设备

在 03 AVFoundation 常用类 章节中,我们并没有提到 iOS 中的相机采集,因为相机采集足够复杂,

我们将相机采集独立成章,足够我们使用一篇文章单独讲解。这里我们姑且抛砖引玉,

在以后的文章中我们将开放一款 相机 APP。

AVFoundation Capture 子系统为 iOS 的视频,照片和音频捕获服务提供了通用的高级体系架构。

如果你要执行以下操作,你应该使用该系统API:

Capture 系统体系结构主要部分是会话,输入和输出,Capture 会话将一个或多个输入连接到一个或多个

输出。输入是媒体的来源,包括捕获设备相机和麦克风。输出是从输入中获取媒体数据,例如写入磁盘文件并产生一个电影文件。

Capture
/ Create the capture session.AVCaptureSession *captureSession = [[AVCaptureSession alloc] init];
// Lookup the default audio device.
AVCaptureDevice *audioDevice =    [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];
// Wrap the audio device in a capture device input.
NSError *error = nil;
AVCaptureDeviceInput *audioInput =    [AVCaptureDeviceInput deviceInputWithDevice:audioDevice error:&error];

if (audioInput) 
{  
  // If the input can be added, add it to the session.    
    if ([captureSession canAddInput:audioInput]) {       
         [captureSession addInput:audioInput];  
    }
} else {   
 // Configuration failed. Handle error.
}

下期预告:
使用 AVFoundation 开发一款相机 APP

上一篇 下一篇

猜你喜欢

热点阅读