录制到.mp4文件的音频队列服务,无法播放。和Magic Cookie问题

时间:2011-01-12 05:13:33

标签: cocoa aac audioqueueservices audioqueue

我是新手Mac程序员,只有3个月。我遇到了音频队列服务问题,希望有人可以帮助我。

我使用Audio Queue Services API创建了一个录制程序,并输出AAC格式的数据。这似乎很好,一切正常。

在我使用 MP4V2 库(一个开源库)输出.mp4文件之前,问题就出现了。

问题1:

  

我使用魔术Cookie 作为AAC标头   输入到MP4V2库函数   的 MP4WriteSample()即可。 .mp4文件里面有数据,但是   播放器(例如:Quicktime)无法识别   .mp4文件,它无法播放音频数据。


问题2:

我将音频队列基本描述格式设置如下:

    aqData.mDataFormat.mSampleRate = 44100.0;
    aqData.mDataFormat.mFormatID = kAudioFormatMPEG4AAC;  // AAC codec.
    aqData.mDataFormat.mChannelsPerFrame = 2;
    aqData.mDataFormat.mFramesPerPacket = 1024;

并使用AudioQueueGetProperty()来获取神奇的cookie。

比我打印出我的魔术饼干内容,就像那样:

    <03808080 22000000 04808080 14401500 18000001 f4000001 f4000580 80800212 10068080 800102>

总共39个字节。

  

究竟是什么意思?

     

每个39字节代表什么意思?

     

可以转换为AAC标题吗?

参考:

Set a Magic Cookie for an Audio File

Set a Magic Cookie for a Playback Audio Queue

CoreAudio - how to determine the end of the playing aac file


非常感谢。

赖安

1 个答案:

答案 0 :(得分:0)

将文件类型设置为kAudioFileM4AType

AudioFileCreateWithURL (
            audioFileURL,
            kAudioFileM4AType,
            &audioFormat,
            kAudioFileFlags_EraseFile,
            &audioFileID
    );