原文摘自:http://www.cocoachina.com/iphonedev/toolthain/2011/1010/3342.html
源码由论坛会员tanhaogg分享,实现了录制屏幕以及音效的功能
因为前段时间项目中需要加入录制屏幕的功能,有点类似于汤姆猫那样,可以录制下来然后分享这段视频。
从来没有接触过音视频方面的东西啊,这方面的资料也着实难找。
![](http://www.cocoachina.com/cms/uploads/allimg/111010/3292_111010130539_1.jpg)
国外的论坛中有一个人写了一个叫做ScreenCaptureView的自定义View(具体代码可自选google),其主要的原理就是定时的绘屏,然后根据关键帧构建音频文件,不过效率不是很好,实际工作中还有会很多问题。
于是喜欢站在巨人肩上的我,就从此处开始YY了,我根据其原理自己写了一个THCapture的类(为什么我写的类总是喜欢TH开头呢,真搞不懂,哈哈),主要用来设置录制相关的属性,
另外有一个THCaptureUtilities的类,目前里面就一个方法,主要用来实现视频与音频的混合。
1.下面我大概的介绍一下时里面的一些方法:
THCapture 有三个属性:
frameRate 用来设置录制的帧频,就是一秒中录制几帧图像。
captureLayer 用来设置你需要录制的Layer.
delegate 是个程序员都明白的
有两个录制相关的方法
//开始录制
- (bool)startRecording;
//结束录制
- (void)stopRecording;
两个录制的回调方法
//录制成功
- (void)recordingFinished:(NSString*)outputPath;
//录制失败
- (void)recordingFaild:(NSError *)error;
2.THCaptureUtilities类中目录就只有一个类方法
// 音频与视频的合并. action的形式如下:
// - (void)mergedidFinish:(NSString *)videoPath WithError:(NSError *)error;
+ (void)mergeVideo:(NSString *)videoPath andAudio:(NSString *)audioPath andTarget:(id)target andAction:(SEL)action;
根据方法名就能明白这方法的作用了
目前代码已经可以良好的工作了,但是录制出来的效果还不是特别好,还有待优化,希望能有这方面的大牛提供一些性能的优化
为了方便,我专程写有一个示例,实现了:使用的时候会录制10秒的视频并存入相册之中,欢迎下载、试用、提出意见
源代码下载: THScreenCaptureViewTest_1.1.0_最新版.zip (552 K)