AVAssetWriter не может создать файл m4a на iPhone 3G - PullRequest
0 голосов
/ 28 марта 2012

Я пытаюсь использовать AVAssetWriter для создания файла m4a. Он отлично работает на любых устройствах, кроме iPhone 3G. Некоторые говорят, что проблема в 3G не поддерживает кодировку AAC. Это правда? if ([assetWriter canAddInput: assetWriterInput]) возвращает NO.

AVAssetWriter *assetWriter = [AVAssetWriter assetWriterWithURL:exportURL
                                                       fileType:AVFileTypeAppleM4A
                                                          error:&assetError];
if (assetError) {
    NSLog (@"error: %@", assetError);
    return;
}
AudioChannelLayout channelLayout;
memset(&channelLayout, 0, sizeof(AudioChannelLayout));
channelLayout.mChannelBitmap = 0;
channelLayout.mNumberChannelDescriptions = 0;
channelLayout.mChannelLayoutTag = kAudioChannelLayoutTag_Stereo;
NSDictionary *outputSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                                [ NSNumber numberWithInt: kAudioFormatMPEG4AAC], AVFormatIDKey,
                                [ NSNumber numberWithInt: 2], AVNumberOfChannelsKey,
                                [ NSNumber numberWithFloat: 44100.0], AVSampleRateKey,
                                [ NSData dataWithBytes: &channelLayout length:sizeof( AudioChannelLayout ) ], AVChannelLayoutKey,
                                [ NSNumber numberWithInt: 192000], AVEncoderBitRateKey,nil];

AVAssetWriterInput *assetWriterInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeAudio
                                                                           outputSettings:outputSettings];

if ([assetWriter canAddInput:assetWriterInput]) {
    [assetWriter addInput:assetWriterInput];
}

Кто-нибудь знает, как создать файл m4a на iPhone 3G? Спасибо

1 Ответ

0 голосов
/ 28 марта 2012

Как вы говорите, iPhone 3G не поддерживает "встроенную" кодировку AAC ( извините, прямой ссылки нет, прокрутите страницу вниз до таблицы 1-2 ), поэтому нет никакой возможности сделать это, не связывая свой собственный кодер.

Проблема в том, что для комплектации кодера AAC требуется патентная лицензия. Если это то, с чем вы можете иметь дело, вы сможете скомпилировать faad2 для iPhone и использовать его.

...