kAudioFormat 用于.aif 音频文件转换?
Posted
技术标签:
【中文标题】kAudioFormat 用于.aif 音频文件转换?【英文标题】:kAudioFormat for .aif audio file conversion? 【发布时间】:2014-02-18 13:59:46 【问题描述】:我想将音频文件从 AAC 格式转换/保存为 AIFF 音频格式。默认我正在尝试 LineraPCM 。 .但音频格式保存为 AAC 格式。 .我想将音频文件保存为 AIFF 格式。这是我的代码
NSDictionary *outputSettings = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:kAudioFormatLinearPCM], AVFormatIDKey, [NSNumber numberWithFloat:44100.0], AVSampleRateKey, [NSNumber numberWithInt:2], AVNumberOfChannelsKey, [NSData dataWithBytes:&channelLayout length:sizeof(AudioChannelLayout)], AVChannelLayoutKey, [NSNumber numberWithInt:16], AVLinearPCMBitDepthKey, [NSNumber numberWithBool:NO], AVLinearPCMIsNonInterleaved, [NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey, [NSNumber numberWithBool:NO], AVLinearPCMIsBigEndianKey, nil];
谁能就 kAudioFormat 或音频设置提出建议,以使用 AVAssetWriterInput 写入文件以将其保存为 AIFF 音频格式?
【问题讨论】:
AIFF 可以浮动,我不是办公室,明天可以仔细看看。这些设置会发生什么? @Volker 使用这些音频设置,音频以 AAC 格式保存。 .但我想以 AIFF 格式保存。 .请告诉我如何修改音频设置以转换为 AIFF 格式? 【参考方案1】:到目前为止,我还没有使用过 AVAssetWriter,但我认为它基本上是一种格式描述,就像 Core Audio with ASBDs 中一样。
为 AIFF 定义的 AudioBasicStreamDescription 示例请参见此处:
aiffFormat.mSampleRate = sampleRate; aiffFormat.mFormatID = kAudioFormatLinearPCM; aiffFormat.mBytesPerPacket = 2; aiffFormat.mFramesPerPacket = 1; aiffFormat.mBytesPerFrame = 2; aiffFormat.mChannelsPerFrame = 2; // for STEREO aiffFormat.mBitsPerChannel = 16; aiffFormat.mFormatFlags = (kLinearPCMFormatFlagIsBigEndian | kAudioFormatFlagIsPacked | kLinearPCMFormatFlagIsSignedInteger) ; aiffFormat.mBitsPerChannel = sizeof(float) * 8; aiffFormat.mBytesPerFrame = aiffFormat.mChannelsPerFrame * sizeof(Float32); aiffFormat.mBytesPerPacket = aiffFormat.mFramesPerPacket * aiffFormat.mBytesPerFrame;
在您上面的代码中,必须将大字节序设置为 YES。如前所述,我从未使用过 AVAssetWriter,因此我不确定必须设置哪些进一步的参数或不设置哪些参数,但是根据上面的示例流描述,运行起来应该不会太难。
【讨论】:
感谢沃尔克。 .我修改了 AVLinearPCMIsBigEndianKey = YES。但是还是有问题。您能否分享您在回答中提到的“AudioBasicStreamDescription”的完整代码sn-p(输入音频文件)。 .这对我会有帮助。 . 这是一个大型类的一部分,它打开各种音频文件以通过 OS X 上的 CoreAudio 进行处理,并且对 AVAssetWriter 没有帮助 感谢沃尔克。 .我不是 Core Audio OSX 方面的专家。 .所以令人困惑的是,如何以 AIFF 格式编写音频。 .无论音频设置如何,它都采用 AAC 音频格式。 .我正在尝试更新音频设置,但它无济于事 :(。点击您的 AVAssetWriter subfurther.com/blog/2010/12/13/… 链接。如果有任何想法,请告诉我...... 我现在可以将格式转换为 AIFF(未压缩 PCM)。 .但我有一个问题“保存的音频文件的帧数为零”你能建议一下吗?你有什么想法吗? 不知道,最好开始一个新问题,也许其他人知道这个错误以上是关于kAudioFormat 用于.aif 音频文件转换?的主要内容,如果未能解决你的问题,请参考以下文章