老谭笔记

录制屏幕以及音效的混合的实现

因为前段时间项目中需要加入录制屏幕的功能,有点类似于汤姆猫那样,可以录制下来然后分享这段视频。
从来没有接触过音视频方面的东西啊,这方面的资料也着实难找。
现实中的悲剧就是:至于你会不会,反正老板就需要你会~~~

没办法,凡事都是被逼出来的啊
幸好看到国外的论坛中有一个人写了一个叫做ScreenCaptureView的自定义View(具体代码可自选google),其主要的原理就是定时的绘屏,然后根据关键帧构建音频文件,不过效率不是很好,实际工作中还有会很多问题。
于是喜欢站在巨人肩上的我,就从此处开始YY了,我根据其原理自己写了一个THCapture的类(为什么我写的类总是喜欢TH开头呢,真搞不懂,哈哈),主要用来设置录制相关的属性,
另外有一个THCaptureUtilities的类,目前里面就一个方法,主要用来实现视频与音频的混合。

##1.下面我大概的介绍一下时里面的一些方法:
THCapture 有三个属性:
frameRate用来设置录制的帧频,就是一秒中录制几帧图像。
captureLayer用来设置你需要录制的Layer.
delegate是个程序员都明白的
有两个录制相关的方法

1
2
3
4
//开始录制
- (bool)startRecording;
//结束录制
- (void)stopRecording;

两个录制的回调方法

1
2
3
4
//录制成功
- (void)recordingFinished:(NSString*)outputPath;
//录制失败
- (void)recordingFaild:(NSError *)error;

##2.THCaptureUtilities类中目录就只有一个类方法

1
2
3
// 音频与视频的合并. action的形式如下:
// - (void)mergedidFinish:(NSString *)videoPath WithError:(NSError *)error;
+ (void)mergeVideo:(NSString *)videoPath andAudio:(NSString *)audioPath andTarget:(id)target andAction:(SEL)action;

根据方法名就能明白这方法的作用了

目前代码已经可以良好的工作了,但是录制出来的效果还不是特别好,还有待优化,希望能有这方面的大牛提供一些性能的优化
为了方便,我专程写有一个示例,实现了:使用的时候会录制10秒的视频并存入相册之中。

下载地址:THScreenCaptureViewTest1.1.0最新版