gpt4 book ai didi

iPhone:用于编辑的音频文件的 NSData 表示

转载 作者:搜寻专家 更新时间:2023-10-30 19:44:44 24 4
gpt4 key购买 nike

长期以来,我一直在摸不着头脑,但一直没有解决这个问题。我还没有找到一个音频编辑的例子!我想在原始音频文件的某处插入新的音频文件,将其另存为新的转换音频文件。

为此,我编写了以下代码。我从 here 得到这个想法.

NSString *file1 = [[NSBundle mainBundle] pathForResource:@"file1" ofType:@"caf"]; // Using PCM format
NSString *file2 = [[NSBundle mainBundle] pathForResource:@"file2" ofType:@"caf"];

NSData *file1Data = [[NSData alloc] initWithContentsOfFile:file1];
NSData *file2Data = [[NSData alloc] initWithContentsOfFile:file2];

NSMutableData *mergedData =[[NSMutableData alloc] initWithCapacity:([file1Data length] + [file2Data length])];

// First chunk from original sound file
NSRange firstChunk;
firstChunk.length = startingPosition;
firstChunk.location = 0;
[mergedData appendData:[file1Data subdataWithRange:firstChunk]];

// Add new sound
[mergedData appendData:file2Data];

// First chunk from original sound file
NSRange secondChunk;
secondChunk.length = [file1Data length] - startingPosition;
secondChunk.location = startingPosition;
[mergedData appendData:[file1Data subdataWithRange:secondChunk]];

NSLog(@"File1: %d, File2: %d, Merged: %d", [file2Data length], [file2Data length], [mergedData length]);

// Convert mergedData to Audio file
[mergedData writeToFile:[self filePath:@"converted.caf"] atomically:YES];

[file1Data release];
[file2Data release];
[mergedData release];

使用以下代码播放转换后的声音文件:

AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] 
initWithContentsOfURL:[NSURL URLWithString:[self filePath:@"converted.caf"]] error:nil];
[audioPlayer prepareToPlay];
[audioPlayerr play];

转换后的文件无法播放。对此的进一步研究我发现将声音转换为 NSData 会截断声音页眉/页脚。是对的吗?谁能帮我解决这个问题。

谢谢。

最佳答案

我认为您最好的选择是使用 ExtAudioFileRef 将每个文件的音频样本提取到缓冲区中。

然后您可以自由地将样本混合到您喜欢的任何位置,并使用 ExtAudioFileWriteAsync 将新的混合文件保存到磁盘。

例如:将声音 1 提取到缓冲区 A 中。将声音 2 提取到缓冲区 B。

创建缓冲区 C,其大小为 A 的长度加上 B 的长度。然后使用 ExtAudioFileWriteAsync 将该缓冲区以您想要的任何格式写入磁盘。

然后该文件应该可以由 AVAudioPlayer 播放。

关于iPhone:用于编辑的音频文件的 NSData 表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9385705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com