0

我正在使用以下代码擦除音频文件:

NSMutableData *wave =[NSMutableData dataWithContentsOfURL:self.recordedFileURL options:NSDataReadingUncached error:nil];

NSUInteger length = [wave length];

Byte *byteData = (Byte*)malloc(length);
memcpy(byteData, [wave bytes], length);
NSMutableData *data = [NSMutableData dataWithBytes:byteData length:length];

[data replaceBytesInRange:NSMakeRange(length*rangeToCut, length-(length*rangeToCut)) withBytes:NULL length:0];

[data writeToFile:[self.recordedFileURL path] atomically:YES];

它正在正确擦除,但之后当我恢复我的音频广告时,将恢复的部分附加到旧部分,如下所示:

NSMutableData *part2=[NSMutableData dataWithContentsOfURL:self.soundFileURL options:NSDataReadingUncached error:nil];

         NSFileHandle *file = [NSFileHandle fileHandleForWritingToURL:oldURL error:nil];
         if (file) {

         [file seekToEndOfFile];
         [file writeData:part2];
         }

然后音频文件已成功附加,但恢复的部分音频干扰太大,无法收听该部分。

请帮助我这里出了什么问题。

4

1 回答 1

0

您的样本大小是否为 16 位或更多?如果您在样本中间剪切音频,则流的其余部分将只是噪音。您需要确保 length*rangeToCut 是样本大小的倍数。

于 2012-01-18T07:51:34.690 回答