Как преобразовать файл WAV в M4A?

Есть ли способ преобразовать записанный файл .WAV в файл .M4A в iOS?

А также мне нужно преобразовать файл .M4A в файл .WAV.

Я пытался использовать Audio Queue Services, но не смог.


person jfalexvijay    schedule 28.01.2011    source источник


Ответы (2)


Этот пост: Из библиотеки 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 и выполнить все преобразования там, но это похоже на то, что вы хотите.

person jonbro    schedule 08.02.2011
comment
Что такое ChannelLayout здесь? - person Bijoy Thangaraj; 01.01.2013
comment
согласно связанному сообщению: AudioChannelLayout channelLayout; memset(&channelLayout, 0, sizeof(AudioChannelLayout)); channelLayout.mChannelLayoutTag = kAudioChannelLayoutTag_Stereo; - person jonbro; 04.02.2013

TPAACAudioConverter работает нормально

person lefakir    schedule 08.09.2011