2012-03-28 6 views
0

Ich versuche AVAssetWriter zu verwenden, um eine m4a-Datei zu erstellen. Es funktioniert perfekt auf allen Geräten ausgeschlossen iPhone 3G. Einige sagen, dass dieses Problem in 3G keine AAC-Codierung unterstützt. Ist es wahr? if ([AssetWriter canAddInput: AssetWriterInput]) gibt NO zurück.AVAssetWriter kann keine m4a-Datei auf dem iPhone 3G erstellen

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]; 
} 

Jeder weiß, wie man M4A-Datei auf einem iPhone 3G erstellen? Danke

Antwort

0

Wie Sie sagen, iPhone 3G unterstützt nicht "integrierte" Codierung von AAC (sorry, no direct link, scroll about a page down to table 1-2), so gibt es keine Möglichkeit, es zu tun, ohne Ihren eigenen Encoder zu bündeln.

Das Problem ist, dass die Bündelung eines AAC-Encoders eine Patentlizenz erfordert. Wenn Sie damit umgehen können, sollten Sie in der Lage sein, faad2 für das iPhone zu kompilieren und das zu verwenden.

+0

Danke für Detailantwort –