AC3 音频 FramesPerPacket 大小
Posted
技术标签:
【中文标题】AC3 音频 FramesPerPacket 大小【英文标题】:AC3 audio FramesPerPacket size 【发布时间】:2012-07-28 20:19:22 【问题描述】:我确实通过以下方式创建音频队列
AudioQueueNewOutput(&audioFormat, audioQueueOutputCallback, (__bridge void*)self, NULL, NULL, 0, &mAudioQueue)
格式如下
audioFormat.mFormatID = kAudioFormatAC3;
audioFormat.mBytesPerPacket = 0;
audioFormat.mFramesPerPacket = mavfContext->streams[audio_index]->codec->frame_size;
audioFormat.mBytesPerFrame = 0;
audioFormat.mChannelsPerFrame = mavfContext->streams[audio_index]->codec->channels;
audioFormat.mBitsPerChannel = 0;
创建失败并出现 kAudioFormatUnsupportedDataFormatError。
我检查了mavfContext->streams[audio_index]->codec->frame_size
是 0。
那么 ac3 media 的 mFramesPerPacket 是否有任何标准值?
【问题讨论】:
我相信答案是否定的(如果文件是可变比特率,则它只有 0,AFAIK 在 AC3 中不常见),但更大的问题是为什么您的格式无效。 mavfContext 结构是从哪里来的,它可能会让你误入歧途吗?如果您直接从磁盘读取音频数据,AudioQueue 文档建议使用AudioFileGetProperty()
(使用 kAudioFilePropertyDataFormat
)获取 ASBD,这样可以为您提供所需的所有信息,而无需进行任何硬编码。
数据格式是从ffmpeg压缩而来的。
mChannelsPerFrame
不为零。所以你的建议是错误是因为mFramesPerPacket
为 0 引起的?
【参考方案1】:
AC3 帧大小应该是 256 * 个通道,因此我希望在这里:
mFramesPerPacket = 256 * mChannelsPerFrame
.
【讨论】:
以上是关于AC3 音频 FramesPerPacket 大小的主要内容,如果未能解决你的问题,请参考以下文章
怎样才能让windows media player能播放H264编码的AVI文件(音频是AC3)
我有一部带有4K(HEVC Main 10 HDR)视频和DTS-HD MA 7.1音频的电影,我希望保持视频和音频的原样,但要在EAC3或必要时在AC3中添加第二音频轨道立体声