gpt4 book ai didi

iphone - 如何在 iOS 中读取音频文件并获取样本?

转载 作者:行者123 更新时间:2023-11-29 11:12:38 31 4
gpt4 key购买 nike

这是我的代码。我从 iOS 库中复制了一些。

- (void)getSamplesWithFileName:(NSString *)fileName
storeToPointer:(SInt16*)pointer
withNumberOfSamples:(UInt32*)numberOfSamples
{
NSFileManager* fileManager = [NSFileManager defaultManager];
NSURL* url = [[fileManager URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask] lastObject];
NSLog(@"%@",url);
NSString* directory = [url path];
NSString* nsFilePath = [directory stringByAppendingPathComponent:fileName];
const char* filePath = [nsFilePath cStringUsingEncoding:[NSString defaultCStringEncoding]];
CFURLRef audioFileURL =
CFURLCreateFromFileSystemRepresentation ( // 1
NULL, // 2
(const UInt8 *) filePath, // 3
strlen (filePath), // 4
false // 5
);
struct AQPlayerState aqData; // 1
aqData.mDataFormat.mFormatID = kAudioFormatLinearPCM; // 2
aqData.mDataFormat.mSampleRate = 8000.0; // 3
aqData.mDataFormat.mChannelsPerFrame = 1; // 4
aqData.mDataFormat.mBitsPerChannel = 16; // 5
aqData.mDataFormat.mBytesPerPacket = // 6
aqData.mDataFormat.mBytesPerFrame =
aqData.mDataFormat.mChannelsPerFrame * sizeof (SInt16);
aqData.mDataFormat.mFramesPerPacket = 1; // 7

OSStatus result =
AudioFileOpenURL ( // 2
audioFileURL, // 3
kAudioFileReadPermission,//fsRdPerm // 4
0, // 5
&aqData.mAudioFile // 6
);
NSLog(@"Play back open status:%ld", result);
CFRelease (audioFileURL); // 7
UInt32 dataFormatSize = sizeof (aqData.mDataFormat); // 1
AudioFileGetProperty ( // 2
aqData.mAudioFile, // 3
kAudioFilePropertyDataFormat, // 4
&dataFormatSize, // 5
&aqData.mDataFormat // 6
);
UInt32 numBytesReadFromFile;
UInt32 numPackets = 100000;
// pointer = malloc(numPackets * sizeof(SInt16));
AudioFileReadPackets(aqData.mAudioFile, false, &numBytesReadFromFile, NULL, 0, &numPackets, pointer);
printf("%ld", numBytesReadFromFile);
*numberOfSamples = numBytesReadFromFile;
}

但是我好像拿错数据了!我测试了声音“Ahhhhhh”,并获得了非常高的过零率。我究竟该如何阅读这个音频文件?

最佳答案

使用Extended Audio File Services

使用 ExtAudioFileOpenURL 打开文件,使用 ExtAudioFileRead 将它们读入缓冲区。适用于 Core Audio 支持的所有格式。

我可以推荐这本书 Learning Core Audio: A Hands-On Guide to Audio Programming for Mac and iOS如果您想进入 Core Audio 编程。

编辑:第一个链接中的文档包含可能对您有所帮助的示例代码。

关于iphone - 如何在 iOS 中读取音频文件并获取样本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10871668/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com