I am using AVAudioRecorder to record something in my iOS app, and I wanted to get the file size of the recording in bytes. Is there a way I can do that?
This is my code for setting up the recorder:
NSArray *pathComponents = [NSArray arrayWithObjects:
[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject],
@"MyAudioMemo.m4a",
nil];
outputFileURL = [NSURL fileURLWithPathComponents:pathComponents];
// Setup audio session
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
// Define the recorder setting
NSMutableDictionary *recordSetting = [[NSMutableDictionary alloc] init];
[recordSetting setValue:[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey];
[recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey];
[recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];
// Initiate and prepare the recorder
recorder = [[AVAudioRecorder alloc] initWithURL:outputFileURL settings:recordSetting error:nil];
recorder.delegate = self;
recorder.meteringEnabled = YES;
[recorder prepareToRecord];
This is where I'm trying to get the file size:
- (void) audioRecorderDidFinishRecording:(AVAudioRecorder *)avrecorder successfully:(BOOL)flag{
// Convert to NSData
NSData *data = [NSData dataWithContentsOfFile:recorder.url];
// Convert to NSString
NSString* dataAsString = [NSString stringWithUTF8String:[data bytes]];
NSLog(@"Size: %@", dataAsString);
}
The NSLog doesn't return anything. Any help is appreciated.
Ok so I figured it out, you can get the file size by doing this:
unsigned long long size = [[NSFileManager defaultManager] attributesOfItemAtPath:[recorder.url path] error:nil].fileSize;
and then convert it into a string by doing:
NSLog(@"This is the file size of the recording in bytes: %llu", size);