我有一个OpenGL视图,我正在使用this优秀的博客文章中解释的内容录制视频。除此之外,我想从麦克风录制音频,并将其与视频混合。
我想出的第一个解决方案是这样的(为了清楚起见,我省略了一些代码):
writer = [[AVAssetWriter alloc]initWithURL:[NSURL fileURLWithPath:filePath] fileType:AVFileTypeMPEG4 error:&error];
audioWriterInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeAudio outputSettings:audioOutputSettings];
videoWriterInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeAudio outputSettings:videoSettings];
[writer addInput:audioWriterInput];
[writer addInput:videoWriterInput];
[writer startWriting];我创建了两个输入,一个音频,一个视频,然后开始写作。每次渲染帧时,我都会获取OpenGL视图的快照,将其转换为CVPixelBufferRef并使用AVAssetWriterInputPixelBufferAdaptor将其添加到编写器输入中
CVPixelBufferRef buffer = NULL;
float millisecondsElapsed = [[NSDate date] timeIntervalSinceDate:startRecordingDate] * 1000.0;
buffer = [self pixelBufferFromCGImage:[shot CGImage] size:shot.size];
BOOL addedToBuffer = [bufferAdaptor appendPixelBuffer:buffer withPresentationTime:CMTimeMake(millisecondsElapsed, 1000)];现在我的问题是,我不知道如何将麦克风中的音频包传送到AVAssetWriterInput中,也不知道如何正确地将两者同步。我一直在看AVAssetReader,但它不知道如何从麦克风中获取音频。我还考虑过从AVAudioRecorder写入的文件中读取数据,但我不知道如何从该文件中读取并将这些数据包转换为CMSampleBufferRef。然后将其作为AVAssetWriterInput的输入。
我希望有人能给我指出正确的解决方案。有什么建议或方向吗?
谢谢!
发布于 2012-01-27 04:02:04
我要做的是:
希望这能有所帮助。
https://stackoverflow.com/questions/9021383
复制相似问题