AVFoundation可以识别一维条码和二维码
一维条码支持的类型有:UPC-E EAN-8 EAN-13 Code 39 Code 93 Code 128 交错式2of5码(iOS8以上) ITF (iOS8以上);
二维码支持的类型有: QR Axtec PDF-417 Data matrix(iOS8以上)
同样使用AVCaptureMetadataOutput ,和实现AVCaptureMetadataOutputObjectsDelegate代理
AVFoundation可以识别一维条码和二维码
一维条码支持的类型有:UPC-E EAN-8 EAN-13 Code 39 Code 93 Code 128 交错式2of5码(iOS8以上) ITF (iOS8以上);
二维码支持的类型有: QR Axtec PDF-417 Data matrix(iOS8以上)
同样使用AVCaptureMetadataOutput ,和实现AVCaptureMetadataOutputObjectsDelegate代理
之前在 AVFoundation拍照和录像 中使用 AVCaptureMovieFileOutput类来捕捉 QuickTime影片,这个类定义了捕捉视频数据的简单方法。当对捕捉到的视频数据进行更底层的操作时,就需要用到 AVCaptureVideoDataOutput
与AVCaptureMovieFileOutput的委托回调不同,AVCaptureVideoDataOutput的委托回调为AVCaptureVideoDataOutputSampleBufferDelegate
它定义了一下两个方法:
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection;- (void)captureOutput:(AVCaptureOutput *)captureOutput didDropSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection NS_AVAILABLE(10_7, 6_0);CMSampleBufferRef将基本的样本数据进行封装并提供格式和时间信息,还会家伙是哪个所有在转换和处理数据时用到的元数据。
以高帧率(FPS)捕捉视频内容带来很多好处
AVCaptureDeviceFormat实例具有 videoSupportedFrameRateRanges 属性,它包含一个AVFrameRateRange对象数组,其中带有格式所支持的最小帧率、最大帧率和时长信息。
确定是否支持高帧率
1 | @implementation AVCaptureDevice (THAdditions) |
Core Image框架中定义了CIDetector和CUFaceFeature,它们使用起来提供了简单而强大的人脸检测功能
但是这些方法没有针对实时性进行优化,在AVFoundation中通过特定的AVCaptureOutput类型的 AVCaptureMetadataOutput也可以实现人脸检测。
当使用人脸检测时,会输出一个具体子类类型AVMetadataFaceObject。AVMetadataFaceObject 定义了多个用户描述被检测到的人脸的属性,最重要的是人脸的边界(bounds),还给出了用于定义检测人脸倾斜角(roll angle)表示人的头部向肩膀方向侧倾角度,偏转角(yaw angle)表示人脸绕y轴旋转的角度。
配置会话与之前使用摄像头拍照类似,区别在于更换一个output,如:
通过 AVCaptureConnection 的属性对摄像头缩放进行有限制的支持,开发者可以通过调整连接缩放的值从默认的1.0增加到
videoMaxScaleAndCropFactor属性定义的最大值
需要用到AVCaptureConnection的两个属性
videoScaleAndCropFactor这个属性取值范围是1.0-videoMaxScaleAndCropFactor
使用AV Foundation 捕捉照片和视频
使用AVFoundation拍照和录制视频的一般步骤如下:
AV Player是一个用来播放给予时间的视听媒体的控制器对象。将视频资源导出到界面需要使用AVPlayerLayer类;AVPlayer只管理一个单独资源的播放,当需要播放多个音频资源可以使用子类AVQueuePlayer
不需要自定义播放器的情况可以使用
MPMoviewPlayerController
参考 http://www.cnblogs.com/kenshincui/p/4186022.html#avPlayer
示例:
1 | NSURL *assetURL = [[NSBundle mainBundle] URLForResource:@"waves" withExtension:@"mp4"]; |
参考 http://www.cnblogs.com/kenshincui/p/4186022.html
步骤
AudioServicesCreateSystemSoundID( CFURLRef inFileURL, SystemSoundID* outSystemSoundID)函数获得系统声音ID。AudioServicesAddSystemSoundCompletion( SystemSoundID inSystemSoundID, CFRunLoopRef inRunLoop, CFStringRef inRunLoopMode, AudioServicesSystemSoundCompletionProc inCompletionRoutine, void* inClientData)方法注册回调函数。AudioServicesPlaySystemSound(SystemSoundID inSystemSoundID) 或者AudioServicesPlayAlertSound(SystemSoundID inSystemSoundID) 方法播放音效(后者带有震动效果)。示例:
介绍