Wav文件未使用libflac.a转换为Flac

时间:2013-09-19 05:50:01

标签: iphone ios

我正在尝试将录制的wave文件转换为flac文件。我正在使用this教程来做到这一点。从here获取LibFlac项目,然后在构建后获得flacios.framworklibFLACiOS.a

我在我的iOS项目中添加了这两件事但是我得到错误,说没有找到flacios.faramework。我不知道为什么那个bcoz它在那里的大厅时间。所以我刚刚复制了flacios.framework的Header文件并将其添加到我的项目中

我使用wav_to_flac文件将wave文件转换为flac并使用此代码执行此操作:

NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentPath = [NSString stringWithFormat:@"%@/%@",[searchPaths objectAtIndex:0],@"tmp"];

    NSString *flacFile = documentPath;
    NSString *waveFile = recorderFilePath;

    NSLog(@"flacFile : %@",flacFile);
    NSLog(@"recorderFilePath : %@",recorderFilePath);

    const char *wave_file = [waveFile UTF8String];
    const char *flac_file = [flacFile UTF8String];

    int interval_seconds = 30;
    char** flac_files = (char**) malloc(sizeof(char*) * 1024);

    int conversionResult = convertWavToFlac(wave_file, flac_file, interval_seconds, flac_files);

    NSLog(@"conversionResult : %i",conversionResult);

我的wave文件日志说:

recorderFilePath : /var/mobile/Applications/C5A86F04-A6A2-44EA-81A9-7AD1F36AAE5D/Documents/MyAudioMemo.wav

我的flac文件日志:

flacFile : /var/mobile/Applications/C5A86F04-A6A2-44EA-81A9-7AD1F36AAE5D/Documents/tmp

但我最后得到了这个错误:

writing to new flac file /var/mobile/Applications/C5A86F04-A6A2-44EA-81A9-7AD1F36AAE5D/Documents/tmp.flac Assertion failed: (encoder->protected_->state == FLAC__STREAM_ENCODER_OK), function FLAC__stream_encoder_process_interleaved, file /Users/dilipmanek/Desktop/FLACiOS-no-ogg/libFLAC/src/libFLAC/stream_encoder.c, line 2040.

是否有人为此工作而不是plz帮助。

1 个答案:

答案 0 :(得分:0)

昨天我遇到了同样的错误,经过几个小时的搜索,我找到了一个解决方案。

录制wav文件时,请使用以下设置并尝试再次转换。

    recorderSettingsDict =[[NSDictionary alloc] initWithObjectsAndKeys:
                       [NSNumber numberWithInt:kAudioFormatLinearPCM],AVFormatIDKey,
                       [NSNumber numberWithInt:16000.0],AVSampleRateKey,
                       [NSNumber numberWithInt:2],AVNumberOfChannelsKey,
                       [NSNumber numberWithInt:16],AVLinearPCMBitDepthKey,
                       [NSNumber numberWithBool:NO],AVLinearPCMIsBigEndianKey,
                       [NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey,
                       nil];