首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iOS中压缩4声道音频文件的支持格式是什么?

在iOS中压缩4声道音频文件的支持格式是什么?
EN

Stack Overflow用户
提问于 2015-10-09 09:16:59
回答 1查看 923关注 0票数 4

首先,我是iOS和音频编程的新手,所以如果我没有使用正确的技术术语,请容忍我,但是我会尽我最大的努力!

我们想做的是:

在我们正在开发的iOS应用程序中,我们希望能够通过4种不同的输出来播放声音,从而拥有一个迷你环绕声系统。也就是说,我们想让左右通道通过耳机播放,而中心和中心通过连接到闪电端口的音频硬件环绕播放。由于音频文件将从远程服务器进行流/下载,因此不能选择使用原始(PCM)音频文件。

问题是:

从iOS 6开始,苹果就可以使用多路配置播放音频文件.这就是我们需要的..。但是,当我们尝试播放一个4声道音频文件,AAC编码并封装成m4a (或CAF)文件格式时,我们会得到以下错误:

ERROR: [0x19deee000] AVAudioFile.mm:86: AVAudioFileImpl: error 1718449215 (它是"kAudioFileUnsupportedDataFormatError“的状态码 )

当我们使用相同的音频编码为无损(ALAC)时,我们会得到相同的错误,但是当我们在编码之前播放相同的音频(PCM格式)时,我们不会得到这个错误。

当我们在AAC和ALAC中使用立体声音频文件或5.1音频文件编码时,我们也不会得到错误,就像4通道音频文件一样。

我们试过的是:

  • 编码

使用Mac:afconvert提供的苹果音频工具,使用以下命令对该文件进行编码:

afconvert -v -f 'm4af' -d "aac@44100" 4ch_master.caf 4ch_44100_AAC.m4a

afconvert -v -f 'caff' -d "alac@44100" 4ch_master.caf 4ch_44100_ALAC.caf

在无损编码的情况下。

afinfo为主音频文件提供的音频格式:

代码语言:javascript
复制
File:           4ch_master.caf
File type ID:   caff
Num Tracks:     1
----
Data format:     4 ch,  44100 Hz, 'lpcm' (0x0000000C) 16-bit little-endian signed integer
                no channel layout.
estimated duration: 582.741338 sec
audio bytes: 205591144
audio packets: 25698893
bit rate: 2822400 bits per second
packet size upper bound: 8
maximum packet size: 8
audio data file offset: 4096
optimized
audio 25698893 valid frames + 0 priming + 0 remainder = 25698893
source bit depth: I16

AAC编码格式信息:

代码语言:javascript
复制
File:           4ch_44100_AAC.m4a
File type ID:   m4af
Num Tracks:     1
----
Data format:     4 ch,  44100 Hz, 'aac ' (0x00000000) 0 bits/channel, 0 bytes/packet, 1024 frames/packet, 0 bytes/frame
Channel layout: Quadraphonic
estimated duration: 582.741338 sec
audio bytes: 18338514
audio packets: 25099
bit rate: 251730 bits per second
packet size upper bound: 1039
maximum packet size: 1039
audio data file offset: 106496
optimized
audio 25698893 valid frames + 2112 priming + 371 remainder = 25701376
source bit depth: I16
format list:
[ 0] format:      4 ch,  44100 Hz, 'aac ' (0x00000000) 0 bits/channel, 0 bytes/packet, 1024 frames/packet, 0 bytes/frame
Channel layout: Quadraphonic
----

对于无损编码的音频文件:

代码语言:javascript
复制
File:           4ch_44100_ALAC.caf
File type ID:   caff
Num Tracks:     1
----
Data format:     4 ch,  44100 Hz, 'alac' (0x00000001) from 16-bit source, 4096 frames/packet
Channel layout: 4.0 (C L R Cs)
estimated duration: 582.741338 sec
audio bytes: 83333400
audio packets: 6275
bit rate: 1143862 bits per second
packet size upper bound: 16777
maximum packet size: 16777
audio data file offset: 20480
optimized
audio 25698893 valid frames + 0 priming + 3507 remainder = 25702400
source bit depth: I16
----
  • 密码

在代码部分,在开始时,我们遵循了在WWDC12第505次会议上使用AVAudioPlayer API提供的实现。在那个层次上,多路路由似乎不能可靠地工作。我们没有怀疑这可能与音频格式有关,所以我们继续试验AVAudioEngine API,这是在WWDC14的第502次会议上展示的,以及与它相关的示例代码。我们为主4通道音频文件(经过一些调整后)完成了多路路由工作,但是在调用scheduleFile时遇到了上面提到的错误,如下面的代码片段所示(注意:我们正在使用Swift,所有必要的音频图形设置都已经完成,但这里没有显示):

代码语言:javascript
复制
var playerNode: AVAudioPlayerNode!
...
...
let audioFileToPlay = AVAudioFile(forReading: URLOfTheAudioFle)
playerNode.scheduleFile(audioFileToPlay, atTime: nil, completionHandler: nil)

有人对音频数据格式可能有什么问题有一点提示吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-20 11:09:28

在与Apple支持部门联系后,答案是,对于当前的发货系统配置来说,这是不可能的:

“感谢您联系Apple Developer Technical (DTS)。我们的工程师已经审查了您的请求,并得出结论认为,考虑到当前的运输系统配置,没有支持实现所需功能的方法。”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33034427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档