Gri*_*neh 22 avfoundation ios avcapturesession
我目前正在开发一个iOS应用程序,它将CoreImage应用于相机提要以拍摄照片和视频,而且我遇到了一些障碍.
到目前为止,我一直在使用AVCaptureVideoDataOutput获取样本缓冲区并使用CoreImage对其进行操作,然后显示简单的预览,并使用它来捕获照片并保存它们.
当我尝试实现视频录制时,通过在从AVCaptureVideoDataOutput接收视频时将SampleBuffers写入视频,它的帧速率非常慢(可能是因为正在进行的其他图像相关处理).
所以我想知道,AVCaptureVideoDataOutput和AVCaptureMoveFileOutput可以同时在同一个AVCaptureSession上运行吗?
我快速给了它,发现当我添加额外输出时,我的AVCaptureVideoDataOutput停止接收信息.
如果我能让它工作,我希望这意味着我可以简单地使用第二个输出以高帧率录制视频,并在用户停止录制后对视频进行后期处理.
任何帮助将不胜感激.
这比你想象的要容易。
请参阅:AVCam演示
recordingQueue =
dispatch_queue_create("Movie Recording Queue",
DISPATCH_QUEUE_SERIAL);在captureOutput:didOutputSampleBuffer:fromConnection:委托方法中,捕获samplebuffer,保留它,并在记录队列中,将其写入文件:
-(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection {
CFRetain(sampleBuffer);
dispatch_async(recordingQueue, ^{
if (assetWriter) {
if (connection == videoConnection) {
[self writeSampleBuffer:sampleBuffer ofType:AVMediaTypeVideo];
} else if (connection == audioConnection) {
[self writeSampleBuffer:sampleBuffer ofType:AVMediaTypeAudio];
}
}
CFRelease(sampleBuffer);
});
}
- (void) writeSampleBuffer:(CMSampleBufferRef)sampleBuffer ofType:(NSString *)mediaType
{
CMTime presentationTime = CMSampleBufferGetPresentationTimeStamp(sampleBuffer);
if ( assetWriter.status == AVAssetWriterStatusUnknown ) {
if ([assetWriter startWriting]) {
[assetWriter startSessionAtSourceTime:presentationTime];
} else {
NSLog(@"Error writing initial buffer");
}
}
if ( assetWriter.status == AVAssetWriterStatusWriting ) {
if (mediaType == AVMediaTypeVideo) {
if (assetWriterVideoIn.readyForMoreMediaData) {
if (![assetWriterVideoIn appendSampleBuffer:sampleBuffer]) {
NSLog(@"Error writing video buffer");
}
}
}
else if (mediaType == AVMediaTypeAudio) {
if (assetWriterAudioIn.readyForMoreMediaData) {
if (![assetWriterAudioIn appendSampleBuffer:sampleBuffer]) {
NSLog(@"Error writing audio buffer");
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
5134 次 |
| 最近记录: |