音频队列服务录制到 .mp4 文件,无法播放。和魔术饼干问题
Posted
技术标签:
【中文标题】音频队列服务录制到 .mp4 文件,无法播放。和魔术饼干问题【英文标题】:Audio Queue Services recording to .mp4 file, that cannot be play. And Magic Cookie issue 【发布时间】:2011-01-12 05:13:32 【问题描述】:我是一个新手 Mac 程序员才 3 个月。我遇到了音频队列服务问题,希望有人能帮助我。
我使用 Audio Queue Services API 创建了一个录音程序,并输出 AAC 格式的数据。看起来不错,一切正常。
直到我使用 MP4V2 库(一个开源库)输出一个 .mp4 文件时,问题才出现。
问题一:
我使用 magic 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。
然后我打印出我的 magic 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】:将文件类型设置为 kAudioFileM4AType
AudioFileCreateWithURL (
audioFileURL,
kAudioFileM4AType,
&audioFormat,
kAudioFileFlags_EraseFile,
&audioFileID
);
【讨论】:
以上是关于音频队列服务录制到 .mp4 文件,无法播放。和魔术饼干问题的主要内容,如果未能解决你的问题,请参考以下文章
录制音频并保存到文档目录后无法使用 AVAudioPlayer 播放音频文件