1

我正在使用 AVAssetWriterInput 从用户那里获取一个 mp3 文件,然后通过电子邮件发送它(仅限 DRM 免费)。我在使用 PCM 时使该过程正常工作,但是当我尝试 mp3、m4a 或 caf 时,我得到一个不起作用的文件,或者得到空数据。我认为这是由于我的输出设置。不绘制数据的输出设置如下。我愿意改变这一切。谢谢!

    NSDictionary *outputSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                                [ NSNumber numberWithInt: kAudioFormatMPEG4AAC], AVFormatIDKey,
                                [ NSNumber numberWithInt: 1 ], AVNumberOfChannelsKey,
                                [ NSNumber numberWithFloat: 44100.0 ], AVSampleRateKey,
                                [ NSData dataWithBytes: &channelLayout length: sizeof( AudioChannelLayout ) ], AVChannelLayoutKey,
                                [ NSNumber numberWithInt: 64000 ], AVEncoderBitRateKey,
                                nil];
4

1 回答 1

2

Apple 没有提供用于编写​​ mp3 文件的 API,可能是因为 mp3 只是无头数据包,而简单地写出原始数据包就可以了。

至于在 m4a/caf 容器中写出 AAC 数据,我不确定——但 AVEncoderBitRateKey 绝对不应该存在,因为你没有编码任何东西——你只是在传递数据。那么为什么不忘记 AVAssetWriter 并使用带有 passthrough 预设的 AVAssetExportSession 呢?

于 2011-06-19T08:54:53.630 回答