nicholjs
nicholjs

Reputation: 1762

AVAssetWriterInput output settings not rendering valid NSData

I am using AVAssetWriterInput to take an mp3 file from the user, and email it (DRM free only). I got the process to work when using PCM, but when I try mp3, or m4a, or caf, I either get a file that doesn't work, or I get empty data. I think it is due to my output settings. The output settings used that draw no data are below. I am open to changing all of it. Thanks!

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

Upvotes: 1

Views: 1265

Answers (1)

Gordon Childs
Gordon Childs

Reputation: 36084

Apple provides no API for writing mp3 files, perhaps because mp3 is just headerless packets and simply writing out the raw packets works fine.

As for writing out AAC data in m4a/caf containers, I'm not sure - but that AVEncoderBitRateKey should definitely not be there as you're not encoding anything - you're just passing data through. So why not forget about AVAssetWriter and use an AVAssetExportSession with a passthrough preset?

Upvotes: 2

Related Questions