gpt4 book ai didi

iphone - 使用 AVAudioPlayer 播放多个音频文件

转载 作者:行者123 更新时间:2023-12-03 18:39:07 25 4
gpt4 key购买 nike

我计划免费发布 10 首歌曲录音,但捆绑在 iPhone 应用程序中。目前,它们还无法在网络、itunes 或任何地方使用。

如你所想,我是 iphone sdk(最新)的新手,所以我一直在浏览开发人员文档、各种论坛和 stackoverflow 来学习。

苹果的avTouch示例应用程序是一个很好的开始。但我希望我的应用程序能够一一播放所有 10 首轨道。所有歌曲都添加到资源文件夹中,并命名为 track1、track2...track10。

在 avTouch 应用程序代码中,我可以看到以下两部分,我认为我需要进行更改才能实现我想要的效果。但我迷路了。

// Load the array with the sample file
NSURL *fileURL = [[NSURL alloc]
initFileURLWithPath:
[[NSBundle mainBundle] pathForResource:@"sample" ofType:@"m4a"]];


- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
if (flag == NO)
NSLog(@"Playback finished unsuccessfully");

[player setCurrentTime:0.];
[self updateViewForPlayerState];
}

谁能帮我
1. 如何加载资源文件夹中添加的所有 10 首轨道的数组
2.当我点击播放时,播放器应该开始第一首轨道。当第一首轨道结束时,第二首轨道应该开始,依此类推其余轨道。

谢谢

最佳答案

inScript,您找到解决方案了吗?您可能想坚持使用简单的东西,例如 if {//do some } else {//do Something else } 语句来连续播放它们。

要加载到数组中,请创建一个新的 plist 文件(右键单击目录树 -> 添加 -> 新文件”并在其中找到属性列表;将文件命名为 soundlist。接下来打开该新文件,右键单击默认情况下显示“字典”的位置,转到“值类型”并选择“数组”...如果您查看该行的最右侧,您会看到一个看起来像 3 条的小按钮,单击该按钮添加您的第一个项目。现在您一次添加一个项目,“track01”、“track02”等...每行一个。

此代码位于您的 .h 文件中:

NSArray* soundsList;

此代码位于您的 .m 文件中:

NSString *soundsPath = [[NSBundle mainBundle] pathForResource:@"soundslist" ofType:@"plist"];
soundsList = [[NSArray alloc] initWithContentsOfFile:soundsPath];

数组始终从索引 # 0 开始...因此,如果您有 5 个轨道,则 track01 将是索引 0,track02 将是索引 1,依此类推。如果您想快速轮询数组以查看其中的内容,可以添加以下代码:

int i = 0;

for (i; i <= ([soundsList count] - 1); i++) {

NSLog(@"soundsList contains %@", [soundsList objectAtIndex:i]);

}

所做的只是计算数组中有多少个项目(即 5 或 10 或任意歌曲),并且 objectAtIndex: 将返回您发送到其中的任何索引号的对象。

要连续播放,您只需将 if-then 语句放入 audioPlayerDidFinishPlaying 方法

如果你想播放该文件,你可以这样做:

NSString* filename = [soundsList objectAtIndex:YOURINDEXNUMBER];
NSString *path = [[NSBundle mainBundle] pathForResource:filename ofType:@"mp3"];

AVAudioPlayer * newAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
self.theAudio = newAudio; // automatically retain audio and dealloc old file if new file is loaded

[newAudio release]; // release the audio safely

theAudio.delegate = self;
[theAudio prepareToPlay];
[theAudio setNumberOfLoops:0];
[theAudio play];

其中 YOURINDEXNUMBER 是您想要播放的任何轨道(请记住,0 = track01、1 = track02 等)

如果您需要帮助设置 .h 文件中的变量,请告诉我,我可以引导您完成整个过程。另外,请记住在 dealloc 方法中释放 theAudio ,以便在程序退出时释放它。

关于iphone - 使用 AVAudioPlayer 播放多个音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2586284/

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