AVAssetWriter 录制音频慢 2 倍?
AVAssetWriter Recording Audio 2 times slower?
我正在尝试使用 AVAssetWriter 录制音频。但是当播放文件时,它的播放速度比原始音频慢 2 倍。
我所做的是以下列方式创建一个 AVAssetWriter..
_writer = [AVAssetWriter assetWriterWithURL:url fileType:AVFileTypeMPEG4 error:nil];
AudioChannelLayout acl;
bzero( &acl, sizeof(acl));
acl.mChannelLayoutTag = kAudioChannelLayoutTag_Mono;
NSDictionary *audioOutputSettings = [NSDictionary dictionaryWithObjectsAndKeys:
[ NSNumber numberWithInt: kAudioFormatMPEG4AAC ], AVFormatIDKey,
[ NSNumber numberWithInt: 1 ], AVNumberOfChannelsKey,
[ NSNumber numberWithFloat: 44100.0 ], AVSampleRateKey,
[ NSNumber numberWithInt: 64000 ], AVEncoderBitRateKey,
[ NSData dataWithBytes: &acl length: sizeof( acl ) ], AVChannelLayoutKey,
nil];
_audioWriterInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeAudio outputSettings:audioOutputSettings];
_audioWriterInput.expectsMediaDataInRealTime=YES;
[_writer addInput:_audioWriterInput];
然后我开始在数据中附加缓冲区,如下所示
if (_audioWriterInput.readyForMoreMediaData == YES) {
[_audioWriterInput appendSampleBuffer:sampleBuffer];
return YES;
}
我正在做的是在以下委托函数中使用 AVCapureSession 获取麦克风输出
- (void)captureOutput:(AVCaptureFileOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
并将 sampleBuffer 直接传递给 avassetWriter 以写入文件。
有人可以告诉我为什么将音频数据写入文件的速度如此之慢。其他人是否遇到过类似的问题?问题的可能解决方案是什么..
知道问题了..
我正在将麦克风捕获添加到我正在捕获相机的同一会话中。将两个会话分开,现在一切似乎都正常..
我正在尝试使用 AVAssetWriter 录制音频。但是当播放文件时,它的播放速度比原始音频慢 2 倍。 我所做的是以下列方式创建一个 AVAssetWriter..
_writer = [AVAssetWriter assetWriterWithURL:url fileType:AVFileTypeMPEG4 error:nil];
AudioChannelLayout acl;
bzero( &acl, sizeof(acl));
acl.mChannelLayoutTag = kAudioChannelLayoutTag_Mono;
NSDictionary *audioOutputSettings = [NSDictionary dictionaryWithObjectsAndKeys:
[ NSNumber numberWithInt: kAudioFormatMPEG4AAC ], AVFormatIDKey,
[ NSNumber numberWithInt: 1 ], AVNumberOfChannelsKey,
[ NSNumber numberWithFloat: 44100.0 ], AVSampleRateKey,
[ NSNumber numberWithInt: 64000 ], AVEncoderBitRateKey,
[ NSData dataWithBytes: &acl length: sizeof( acl ) ], AVChannelLayoutKey,
nil];
_audioWriterInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeAudio outputSettings:audioOutputSettings];
_audioWriterInput.expectsMediaDataInRealTime=YES;
[_writer addInput:_audioWriterInput];
然后我开始在数据中附加缓冲区,如下所示
if (_audioWriterInput.readyForMoreMediaData == YES) {
[_audioWriterInput appendSampleBuffer:sampleBuffer];
return YES;
}
我正在做的是在以下委托函数中使用 AVCapureSession 获取麦克风输出
- (void)captureOutput:(AVCaptureFileOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
并将 sampleBuffer 直接传递给 avassetWriter 以写入文件。
有人可以告诉我为什么将音频数据写入文件的速度如此之慢。其他人是否遇到过类似的问题?问题的可能解决方案是什么..
知道问题了..
我正在将麦克风捕获添加到我正在捕获相机的同一会话中。将两个会话分开,现在一切似乎都正常..