如何将WAV文件转换为M4A?

时间:2011-01-28 04:56:04

标签: ios audio wav m4a

有没有办法将录制的.WAV文件转换为iOS中的.M4A文件?

我还必须将.M4A文件转换为.WAV文件。

我尝试使用音频队列服务,但我无法做到。

2 个答案:

答案 0 :(得分:3)

这篇文章:From iPod Library to PCM Samples in Far Fewer Steps Than Were Previously Necessary描述了如何从用户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并在那里进行所有转换,但这看起来与你想要的不同。

答案 1 :(得分:0)

TPAACAudioConverter工作正常