【问题标题】:what is AudioStreamBasicDescription for m4a file format什么是 m4a 文件格式的 AudioStreamBasicDescription
【发布时间】:2011-06-07 00:25:21
【问题描述】:

我已经尝试了更多用于 m4a 文件格式的 AudioStreamBasicDescription。我仍然遇到了一些问题。

请任何人告诉我 m4a 文件格式的确切 AudioStreamBasicDescription。

【问题讨论】:

  • 如果你找到了结果,当然希望你已经发布了!

标签: ios audio m4a


【解决方案1】:

您可以使用 ExtAudioFileGetProperty 从现有的 m4a 音频文件中获取 ASBD。

更多详情Click here

【讨论】:

  • 那么当你在一个 m4a 文件上运行 ExtAudioFileGetProperty 的结果是什么?
【解决方案2】:

您可以使用 2 种(至少)不同的方法获取文件的 ASBD。您可以使用“ExtAudioFileGetProperty”或“AudioFileGetProperty”。

AudioFileGetProperty:

NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"m4a"];
CFURLRef soundFileURL = (__bridge CFURLRef)[NSURL fileURLWithPath:soundFilePath];

if (soundFileURL != nil) {

    AudioFileID audioFile;
    OSStatus theError = noErr;

    theError = AudioFileOpenURL(soundFileURL,
                                kAudioFileReadPermission,
                                0,
                                &audioFile);
    if(theError != noErr) {
        printf("AudioFileOpenURL failed!");
        return;
    }

    AudioStreamBasicDescription asbd;
    UInt32 size = sizeof(asbd);
    theError = AudioFileGetProperty(audioFile, kAudioFilePropertyDataFormat, &size, &asbd);

    if(theError != noErr) {
        printf("kAudioFilePropertyDataFormat failed!");
        return;
    } else {
        printf("Sample Rate : %f\n", asbd.mSampleRate);
        /*
         Float64             mSampleRate;
         AudioFormatID       mFormatID;
         AudioFormatFlags    mFormatFlags;
         UInt32              mBytesPerPacket;
         UInt32              mFramesPerPacket;
         UInt32              mBytesPerFrame;
         UInt32              mChannelsPerFrame;
         UInt32              mBitsPerChannel;
         UInt32              mReserved;
         */
    }
}

ExtAudioFileGetProperty:

NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"m4a"];
CFURLRef soundFileURL = (__bridge CFURLRef)[NSURL fileURLWithPath:soundFilePath];

if (soundFileURL != nil) {
    OSStatus theError = noErr;

    ExtAudioFileRef fileRef;
    theError = ExtAudioFileOpenURL(soundFileURL, &fileRef);

    if(theError != noErr) {
        printf("ExtAudioFileOpenURL failed!");
        return;
    }

    AudioStreamBasicDescription asbd;
    UInt32 size = sizeof(asbd);
    theError = ExtAudioFileGetProperty(fileRef, kExtAudioFileProperty_FileDataFormat, &size, &asbd );
}

【讨论】:

    猜你喜欢
    • 2012-03-13
    • 2020-10-24
    • 2013-07-14
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    • 1970-01-01
    • 2014-01-20
    • 2014-08-15
    相关资源
    最近更新 更多