IOS拼接MP3,歌曲文件合成。
发布日期:2021-10-02 15:44:22 浏览次数:1 分类:技术文章

本文共 1783 字,大约阅读时间需要 5 分钟。

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

[cpp] 
  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.     // Do any additional setup after loading the view, typically from a nib.  
  5.       
  6.     //音频文件路径  
  7.     NSString *mp3Path1 = [[NSBundle mainBundle] pathForResource:@"1" ofType:@"mp3"];  
  8.     NSString *mp3Path2 = [[NSBundle mainBundle] pathForResource:@"2" ofType:@"mp3"];  
  9.     NSString *mp3Path3 = [[NSBundle mainBundle] pathForResource:@"3" ofType:@"mp3"];  
  10.     //音频数据  
  11.     NSData *sound1Data = [[NSData alloc] initWithContentsOfFile: mp3Path1];  
  12.     NSData *sound2Data = [[NSData alloc] initWithContentsOfFile: mp3Path2];  
  13.     NSData *sound3Data = [[NSData alloc] initWithContentsOfFile: mp3Path3];  
  14.       
  15.     //合并音频  
  16.     NSMutableData *sounds = [NSMutableData alloc];  
  17.     [sounds appendData:sound1Data];  
  18.     [sounds appendData:sound2Data];  
  19.     [sounds appendData:sound3Data];  
  20.     //保存音频  
  21.       
  22.     NSLog(@"data length:%d", [sounds length]);  
  23.       
  24.     [sounds writeToFile:[self filePathWithName:@"tmp.mp3"] atomically:YES];  
  25.       
  26.       
  27.     player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[self filePathWithName:@"tmp.mp3"]] error:nil];  
  28.     player.delegate = self;  
  29.     [player prepareToPlay];  
  30. }  
  31.   
  32. - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag  
  33. {  
  34.     MPMusicPlayerController *ipodPlayer = [MPMusicPlayerController iPodMusicPlayer];  
  35.     if ([ipodPlayer playbackState] == MPMusicPlaybackStateInterrupted) {  
  36.         [ipodPlayer play];  
  37.     }  
  38. }  
  39.   
  40. - (void)didReceiveMemoryWarning  
  41. {  
  42.     [super didReceiveMemoryWarning];  
  43.     // Dispose of any resources that can be recreated.  
  44. }  
  45.   
  46. - (NSString *)filePathWithName:(NSString *)filename  
  47. {  
  48.     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
  49.     NSString *documentsDirectory = [paths objectAtIndex:0];  
  50.     return [documentsDirectory stringByAppendingPathComponent:filename];  
  51. }  
  52.   
  53.   
  54. - (IBAction)buttonClick:(id)sender {  
  55.       
  56.       
  57.     [player play];  
  58.       
  59. }  

转载地址:https://blog.csdn.net/jinyeweiyang/article/details/41286289 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:smarty
下一篇:Unity3D研究院之IOS截屏 话筒录音 录制截屏视频保存沙盒

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年03月03日 07时18分34秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

可变车道怎么走不违章_走ETC竟比人工车道贵50%!交警:这3点不知道,吃亏的是自己... 2019-04-21
苹果笔记本的end键_笔记本用户的大烦恼:触控板,想好好用你不容易 2019-04-21
趣玩机器人什么时候成立的_【直播回顾】当我们谈机器人集成调试的时候在谈什么... 2019-04-21
中考大数据大连79_中考大数据 | 大连部分初中2019年中考指标生录取最低分及人数统计!... 2019-04-21
vue 地理位置定位_HTML5地理位置 2019-04-21
pac代理模式什么意思_托管仓库租赁电商仓储运营模式托管什么意思 2019-04-21
validated 验证数组_在 Laravel 中处理请求验证的智能方法 2019-04-21
洞泾智能机器人产业基地_G60科创走廊洞泾人工智能产业基地(核心区块)暨洞泾镇招商人员培训班顺利开班... 2019-04-21
java 拼接路径优雅方式_Java安全编码实践总结 2019-04-21
realme x2 深度测试打不开_搭载65W超级闪充,realme真我X7手机充电评测 2019-04-21
整数取反编程_【每日编程185期】数字的补数 2019-04-21
能用别的软件吗_手机软件能用蓝牙传送吗 2019-04-21
为什么图片要2的倍数_为什么宝宝喜欢流“口水”?这种2种原因父母要知道,建议收藏... 2019-04-21
下载了XAMPP怎样打开MYSQL_xampp mysql安装启动 2019-04-21
pdo转mysql_mysql转mysqli或pdo 2019-04-21
mysql如果没有表就创建_mysql – 改变表是否存在或创建如果没有 2019-04-21
ireport连接mysql_ireport 4.5教程之数据源介绍 2019-04-21
mysql多维模型_数据仓库数据库设计方法---关系模型和多维模型比较分析 2019-04-21
局域网聊天程序 java MySQL_java 基于TCP/IP协议的局域网聊天小程序 2019-04-21
r glm 中的p值_假设检验中的P值 2019-04-21