0

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

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

比我使用wav_to_flac文件将波形文件转换为 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);

我的波形文件日志说:

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.

有没有人在这方面工作过,请帮忙。

4

1 回答 1

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];
于 2014-01-05T12:24:24.227 回答