在录音机应用程序中,我正在尝试将立体声语音数据捕获到文件中。
for ( int i=0; i<bufferList->mNumberBuffers; i++ ) {
memcpy(bufferList->mBuffers[i].mData, audio->mBuffers[i].mData, byteCount);
}
上述代码包含录制的语音数据。文件编写如下。
NSString *root = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSString *filePath = [root stringByAppendingPathComponent:@"mic_in.raw"];
if(![[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
[[NSData data] writeToFile:filePath atomically:YES];
}
NSData *myData = [NSData dataWithBytes:audio->mBuffers[0].mData length:byteCount];
NSFileHandle *handle = [NSFileHandle fileHandleForWritingAtPath:filePath];
[handle truncateFileAtOffset:[handle seekToEndOfFile]];
[handle writeData:myData];
myData = [NSData dataWithBytes:audio->mBuffers[1].mData length:byteCount];
[handle truncateFileAtOffset:[handle seekToEndOfFile]];
[handle writeData:myData];
[handle closeFile];
“立体声”语音以“非交错”格式录制。
保存的文件内容不正确。 (例如,对于15秒的语音数据,仅保存2.5。保存的数据也不正确) “Mono”演讲的文件写得很好。
我不确定,'立体'语音文件写错了什么?
答案 0 :(得分:0)
立体声文件写作的问题得到了解决,如下所示。
回调中非常频繁的文件操作导致数据丢失。 因此,在回调中,数据(在交错转换之后)保存在一个大缓冲区中,在语音结束时,完整的缓冲区内容一次写入文件。
上述方法解决了立体声文件捕获问题。