macos - AudioFileReadPackets错误-50

我正在使用Audio API,第一步是将文件内容读入缓冲区。
我有以下代码,但是执行AudioFileReadPackets时会得到返回代码-50,但我没有得到它,因为在文档中它不存在。
您能指出我正确的方向吗?任何想法将不胜感激!

    //create url for file
    CFURLRef myFileURL = CFURLCreateWithString(kCFAllocatorDefault, INPUT_FILE, NULL);
    AudioFileID audioFile;
    OSStatus error;

    error = AudioFileOpenURL(myFileURL,kAudioFileReadPermission,0,&audioFile);
    CFRelease(myFileURL);

    if(error != noErr) {
        printf("%d",(int)error);
        exit(1);
    }

    AudioStreamBasicDescription  dataFormat;
    UInt32 size = sizeof(dataFormat);

    error = AudioFileGetProperty(audioFile, kAudioFilePropertyDataFormat, &size, &dataFormat);

    if(error != noErr) {
        printf("%d",(int)error);
        exit(1);
    }

    UInt32 dataSize;
    error = AudioFileGetPropertyInfo(audioFile, kAudioFilePropertyAudioDataPacketCount, &dataSize, NULL);

    if(error != noErr) {
        printf("%d",(int)error);
        exit(1);
    }

    UInt32 packetCount;
    error = AudioFileGetProperty(audioFile, kAudioFilePropertyAudioDataPacketCount, &dataSize, &packetCount);

    if(error != noErr) {
        printf("%d",(int)error);
        exit(1);
    }

    printf("File opened, packet count: %d\n", packetCount);
    UInt32 packetsRead = packetCount;
    UInt32 bytesRead = 0;

    if(packetCount > 0) {
        SInt16 audioData = *(SInt16 *)malloc(2 * packetCount);
        error = AudioFileReadPackets(audioFile, false, &bytesRead, NULL, 0, &packetsRead, audioData);

        if(error != noErr) {
            printf("%d",(int)error);
            exit(1);
        }

        printf("Read %d bytes, %d packets",bytesRead,packetsRead);

    }

最佳答案

-50 = paramErr表示您传递了错误的参数。文档说,对于恒定比特率音频,AudioFileReadPackets的第四个参数只能为NULL。

https://stackoverflow.com/questions/28489918/

相关文章:

c# - 根据文本框错误重新定义变量

haskell - 实例化类时发生编译错误

c# - Unity 在编译有效的 C# 类时遇到问题

compiler-errors - Lazarus IDE-编译失败: Cannot open in

asp.net - 错误: SignalRRouteExtension.Mapconnection

sql - Microsoft SQL服务器

c# - 为什么这种编译方式有所不同?

compiler-errors - gfortran在编译文件上不输出ident工具

eclipse - 如何修复xtext上的简单错误?

c# - MVC3网站编译器错误