IOS拼接MP3,歌曲文件合成。

其实就是把MP3文件转成NSData,然后再进行拼合。


- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    
    //音频文件路径
    NSString *mp3Path1 = [[NSBundle mainBundle] pathForResource:@"1" ofType:@"mp3"];
    NSString *mp3Path2 = [[NSBundle mainBundle] pathForResource:@"2" ofType:@"mp3"];
    NSString *mp3Path3 = [[NSBundle mainBundle] pathForResource:@"3" ofType:@"mp3"];
    //音频数据
    NSData *sound1Data = [[NSData alloc] initWithContentsOfFile: mp3Path1];
    NSData *sound2Data = [[NSData alloc] initWithContentsOfFile: mp3Path2];
    NSData *sound3Data = [[NSData alloc] initWithContentsOfFile: mp3Path3];
    
    //合并音频
    NSMutableData *sounds = [NSMutableData alloc];
    [sounds appendData:sound1Data];
    [sounds appendData:sound2Data];
    [sounds appendData:sound3Data];
    //保存音频
    
    NSLog(@"data length:%d", [sounds length]);
    
    [sounds writeToFile:[self filePathWithName:@"tmp.mp3"] atomically:YES];
    
    
    player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[self filePathWithName:@"tmp.mp3"]] error:nil];
    player.delegate = self;
    [player prepareToPlay];
}

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
    MPMusicPlayerController *ipodPlayer = [MPMusicPlayerController iPodMusicPlayer];
    if ([ipodPlayer playbackState] == MPMusicPlaybackStateInterrupted) {
        [ipodPlayer play];
    }
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (NSString *)filePathWithName:(NSString *)filename
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    return [documentsDirectory stringByAppendingPathComponent:filename];
}


- (IBAction)buttonClick:(id)sender {
    
    
    [player play];
    
}


评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值