0
我試圖從iOS上讀取16位16KHz wav(20秒長)並執行指紋識別。我嘗試遵循指南「GNSDK-for-Mobile-iOS-Developers-Guide」,但它沒有第53頁的Objective-C示例(僅C#)。我的代碼讀取整個文件,然後將2K塊寫入函數fingerprintWrite(我也嘗試將指針傳遞給整個文件)。變量「結果」是永遠不會設置爲1 - 表示沒有足夠的數據已經過去了 - 但以20秒應該介於夠了吧誰能幫助感謝使用Gracenote SDK(GNSDK)讀取文件並執行指紋識別
這是我做了什麼:??
NSString *filepath = [[NSBundle mainBundle] pathForResource:@"Human.signed.20s.16bit" ofType:@"raw"];
NSData *audioData= [NSData dataWithContentsOfFile:filepath];
BOOL result;
if (error)
NSLog(@"Error reading file: %@", error.localizedDescription);
// for debugging...
NSLog(@"contents: %@", audioData);
NSLog(@"Done:");
unsigned char buffer[audioData.length];
[audioData getBytes:buffer length:audioData.length];
for (int i = 0; i < audioData.length; i++) {
printf("0x%02x ",(unsigned char)buffer[i]);
}
[self.gnMusicIDFileInfo fingerprintBegin:16000 audioSampleSize:16 audioChannels:1 error:&error];
if (error) {
NSLog(@"Error = %@", [error localizedDescription]);
}
int count = 0;
result = 0;
while (result==0 && count<sizeof(buffer)-2048)
{
result = [self.gnMusicIDFileInfo fingerprintWrite:&buffer[count] audioDataSize:2048 error:&error];
NSLog(@"Count = %i",count);
count=count+2048;
}
NSLog(@"result = %i", result);
if (error) {
NSLog(@"Error = %@", [error localizedDescription]);
}
[self.gnMusicIDFileInfo fingerprintEnd:&error];
if (error) {
NSLog(@"Error = %@", [error localizedDescription]);
}
[self.gnMusicIDFileInfo fingerprint:&error];
if (error) {
NSLog(@"Error = %@", [error localizedDescription]);
}
您可以分享有關您的用例的信息嗎?您是否想要識別來自CD的音樂文件?或從電臺/流媒體中識別音樂? – WYH