Есть ли способ преобразовать записанный файл .WAV в файл .M4A в iOS?
А также мне нужно преобразовать файл .M4A в файл .WAV.
Я пытался использовать Audio Queue Services, но не смог.
Есть ли способ преобразовать записанный файл .WAV в файл .M4A в iOS?
А также мне нужно преобразовать файл .M4A в файл .WAV.
Я пытался использовать Audio Queue Services, но не смог.
Этот пост: Из библиотеки iPod в сэмплы PCM за гораздо меньшее количество шагов, чем требовалось ранее описывает, как загрузить файл из пользовательской библиотеки iPod и записать его в файловую систему как линейный pcm (wav) файл.
Я считаю, что изменение, которое вам нужно будет внести в код для загрузки файла из файловой системы, вместо этого будет в NSURL, который описывает, где находится ресурс:
-(IBAction) convertTapped: (id) sender {
// set up an AVAssetReader to read from the iPod Library
NSURL *assetURL = [[NSURL alloc] initFileURLWithPath:@"your_m4a.m4a"];
AVURLAsset *songAsset =
[AVURLAsset URLAssetWithURL:assetURL options:nil];
NSError *assetError = nil;
AVAssetReader *assetReader =
[[AVAssetReader assetReaderWithAsset:songAsset
error:&assetError]
retain];
if (assetError) {
NSLog (@"error: %@", assetError);
return;
}
Если вы идете в противоположном направлении, вам нужно будет изменить форматирование на выходе:
NSDictionary *outputSettings =[NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:kAudioFormatLinearPCM], AVFormatIDKey,
[NSNumber numberWithFloat:44100.0], AVSampleRateKey,
[NSNumber numberWithInt:2], AVNumberOfChannelsKey,
[NSData dataWithBytes:&channelLayout length:sizeof(AudioChannelLayout)],
AVChannelLayoutKey,
[NSNumber numberWithInt:16], AVLinearPCMBitDepthKey,
[NSNumber numberWithBool:NO], AVLinearPCMIsNonInterleaved,
[NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey,
[NSNumber numberWithBool:NO], AVLinearPCMIsBigEndianKey,
nil];
Я не уверен в точных настройках, которые будут здесь для m4a, но это должно приблизить вас.
Другой вариант - загрузить ffmpeg lib и выполнить все преобразования там, но это похоже на то, что вы хотите.