Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to specify bitrate for an AudioStreamBasicDescription in coreaudio?

Tags:

ios

core-audio

I'm recording some PCM audio using an Audio Unit. In the callback, when I have 30 seconds of audio, I want to write to disk an 8000Hz AAC encoded file with a 12kb/s bitrate.

This is the AudioStreamBasicDescription that I use, but my output ends up being 40 kb/s. My question is, can I change some parameters to lower the bitrate, and if so, which parameters do I modify?

    // specify the M4A
    AudioStreamBasicDescription outputFormat = {0};

    outputFormat.mSampleRate         = 8000.0;
    outputFormat.mFormatID           = kAudioFormatMPEG4AAC;
    outputFormat.mFormatFlags        = kMPEG4Object_AAC_Main;
    outputFormat.mChannelsPerFrame   = 1;
like image 416
blueether Avatar asked Nov 22 '22 20:11

blueether


1 Answers

See the field mBitsPerChannel in the AudioStreamBasicDescription.

The number of bits for one audio sample. For example, for linear PCM audio using the kAudioFormatFlagsCanonical format flags, calculate the value for this field as follows:

mBitsPerChannel = 8 * sizeof (AudioSampleType);

Set this field to 0 for compressed formats.

https://developer.apple.com/library/ios/documentation/MusicAudio/Reference/CoreAudioDataTypesRef/#//apple_ref/c/tdef/AudioStreamBasicDescription

like image 188
Nick Avatar answered Dec 29 '22 13:12

Nick