AVFoundation
来源:互联网 发布:wps软件下载2016 编辑:程序博客网 时间:2024/05/16 05:08
AVFoundation原理
AVCaptureConnection*videoConnection = nil;
for (AVCaptureConnection *connection in imageOutput_.connections)
{
for (AVCaptureInputPort *port in[connectioninputPorts])
{
if ([[port mediaType] isEqual:AVMediaTypeVideo] )
{
videoConnection = connection;
break;
}
}
if (videoConnection) {break; }
}
//锁定connection后就可以获取静态图了。
[imageOutput_captureStillImageAsynchr
NSDictionary *exifAttachments =(__bridgeNSDictionary*)CMGetAttachment(imageSampleBuffer,kCGImagePropertyExifDict
}];
最后,如果想抓取视频的话,请参考苹果的文档:
Startinga Recording
You startrecording a QuickTime movie using startRecordingToOutputFi
.You need to supply a file-based URL and a delegate. The URL mustnot identify an existing file, as the movie file output does notoverwrite existing resources. You must also have permission towrite to the specified location. The delegate must conform tothe AVCaptureFileOutputRecor
captureOutput:didFinishRecordingToOutp
AVCaptureMovieFileOutput*aMovieFileOutput = <#Get a movie file output#>;
NSURL *fileURL = <#A file URL that identifies the output location#>;
[aMovieFileOutput startRecordingToOutputFileURL:fileURL recordingDelegate:<#The delegate#>];
In theimplementation of captureOutput:didFinishRecordingToOutp
,the delegate might write the resulting movie to the camera roll. Itshould also check for any errors that might have occurred.
Ensuringthe File Was Written Successfully
To determinewhether the file was saved successfully, in the implementationof captureOutput:didFinishRecordingToOutp
AVErrorRecordingSuccessf
- (void)captureOutput:(AVCaptureFileOutput *)captureOutput
didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL
fromConnections:(NSArray *)connections
error:(NSError *)error {
BOOL recordedSuccessfully = YES;
if ([error code] != noErr) {
// A problem occurred: Find out if the recording was successful.
id value = [[error userInfo] objectForKey:AVErrorRecordingSuccessfullyFinishedKey];
if (value) {
recordedSuccessfully = [value boolValue];
}
}
// Continue as appropriate...
You shouldcheck the value of the AVErrorRecordingSuccessf
AVErrorMaximumDurationRe
AVErrorMaximumFileSizeRe
.Other reasons the recording might stop are:
Thedisk is full—
AVErrorDiskFull
.Therecording device was disconnected (for example, the microphone wasremoved from an iPod touch)—
AVErrorDeviceWasDisconne
.cted Thesession was interrupted (for example, a phone call wasreceived)—
AVErrorSessionWasInterru
.pted
1. AVFoundation
Build Phases => Link Binary With Libraies => + => AVFoundation.framework => add
firstviewcontroller.h
- #import <UIKit/UIKit.h>
- #import <AVFoundation/AVFoundation.h>
- @interface FirstViewController : UIViewController
- {
- __weak IBOutlet UILabel *label;
- AVAudioPlayer *player;
- }
- - (IBAction)toplay:(id)sender;
- @end
firstviewcontroller.m
- - (IBAction)toplay:(id)sender
- {
- NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/test.mp3", [[NSBundle mainBundle] resourcePath]]];
- NSError *error;
- player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
- player.numberOfLoops = -1;
- [player play];
- [label setText:@"Play ..."];
- }
或者:
- NSString *path = [[NSBundle mainBundle] pathForResource:@"sound" ofType:@"mp3"];
- NSError *error;
- player = [[AVAudioPlayer alloc]initWithContentsOfURL:[[NSURL alloc]initFileURLWithPath:path]error:&error];
- [player prepareToPlay];
- player.numberOfLoops = -1;
- [player play];
test.mp3 拖放到 Supporting Files 文件夹。
播放,暂停和停止
- [player play]; //播放
- [player pause]; //暂停
- [player stop]; //停止
更多功能:
1. 音量:
- player.volume=0.8;//0.0~1.0之间
2. 循环次数
- player.numberOfLoops = 3;//默认只播放一次 负数(-1)为无限循环
3.播放位置
- player.currentTime = 15.0;//可以指定从任意位置开始播放
3.1 显示当前时间
- NSLog(@"%f seconds played so far", player.currentTime);
4.声道数
- NSUInteger channels = player.numberOfChannels;//只读属性
5.持续时间
- NSTimeInterval duration = player.dueration;//获取采样的持续时间
6.仪表计数
- player.meteringEnabled = YES;//开启仪表计数功能
- [ player updateMeters];//更新仪表读数
- //读取每个声道的平均电平和峰值电平,代表每个声道的分贝数,范围在-100~0之间。
- for(int i = 0; i<player.numberOfChannels;i++){
- float power = [player averagePowerForChannel:i];
- float peak = [player peakPowerForChannel:i];
- }
7. 初始化播放器
- [player prepareToPlay];
8. 判断是否正在播放
- [player isPlaying]
9、代理方法
加入播放出现异常,或者被更高级别的系统任务打断,我们的程序还没来得及收场就挂了,怎么办?不急,我们可以通过几个委托方法很好地处理所有的情形。
首先给player设置委托是必须的:
- player.delegate = self;
- - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer*)player successfully:(BOOL)flag{
- //播放结束时执行的动作
- }
- - (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer*)player error:(NSError *)error{
- //解码错误执行的动作
- }
- - (void)audioPlayerBeginInteruption:(AVAudioPlayer*)player{
- //处理中断的代码
- }
- - (void)audioPlayerEndInteruption:(AVAudioPlayer*)player{
- //处理中断结束的代码
- }
参考:
http://blog.csdn.net/xys289187120/article/details/6595919
http://blog.csdn.net/iukey/article/details/7295962
视频:
http://www.youtube.com/watch?v=kCpw6iP90cY
2. AudioToolbox
Build Phases => Link Binary With Libraies => + => AudioToolbox.framework => add
firstviewcontroller.h
- #import <UIKit/UIKit.h>
- #import <AudioToolbox/AudioToolbox.h>
- @interface FirstViewController : UIViewController
- {
- }
- - (IBAction)toplay:(id)sender;
- @end
firstviewcontroller.m
- - (IBAction)toplay:(id)sender
- {
- CFBundleRef mainBundle = CFBundleGetMainBundle();
- CFURLRef soundFileURLRef;
- soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"sound1", CFSTR ("wav"), NULL);
- UInt32 soundID;
- AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);
- AudioServicesPlaySystemSound(soundID);
- }
- AVFoundation
- AVFoundation
- AVFoundation
- AVFoundation
- AVFoundation
- AVFoundation总结
- AVFoundation 一些
- AVFoundation原理
- AVFoundation总结
- AVFoundation总结
- AVFoundation总结
- avfoundation介绍
- AVFoundation总结
- AVFoundation基础知识
- AVFoundation初识
- iOS - AVFoundation
- AVFoundation笔记
- AVFoundation使用
- ThinkPHP学习笔记(八)CURD的的相关操作以及表的关联查询等
- linux 查看目录空间使用情况
- 实现点击双击 消息解决
- 【python】解析json
- Applet虽签名 js调用还是会出现权限异常。
- AVFoundation
- HttpURLConnection上传文件(图片)小试
- seandroid 调用apk过程
- Struts2之ajax初析
- word 对标题编号
- 查询实例中每个DB中所有表的详细信息
- sql指针
- opengl es 渲染方式与 纹理坐标设定 ,OpenGL ES 模型视图之缩放操作
- 织梦时间大全