2011-01-28 10 views

Respuesta

3

En esta publicación: From iPod Library to PCM Samples in Far Fewer Steps Than Were Previously Necessary se describe cómo cargar un archivo desde la biblioteca de ipod de los usuarios y escribirlo en el sistema de archivos como un archivo lineal pcm (wav).

creo que el cambio que se necesita para hacer que el código para cargar un archivo del sistema de archivos en vez estaría en el NSURL que describe las que el activo es:

-(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; 
} 

Si va en la dirección opuesta, tendrá que cambiar el formato en el extremo de salida:

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

no estoy seguro de la configuración exacta que irían aquí para M4A, pero esto debe llegar más cerca.

La otra opción sería cargar en ffmpeg lib y hacer toda su conversión allí, pero eso parece diferente de lo que desea.

+0

¿Qué es channelLayout aquí? –

+0

según la publicación vinculada: AudioChannelLayout channelLayout; memset (y channelLayout, 0, sizeof (AudioChannelLayout)); channelLayout.mChannelLayoutTag = kAudioChannelLayoutTag_Stereo; – jonbro

Cuestiones relacionadas