为什么这段代码的avaudioplayer 没声音不能播放音乐,请朋友们看一下

ios 开发,iOS自带的AVAudioPlayer能播放网络音乐吗?_百度知道
ios 开发,iOS自带的AVAudioPlayer能播放网络音乐吗?
提问者采纳
1、只可以播放完整的音频2、支持播放本地和网络音频3、在播放网络音频的时候需要先下载到本地,做转码播放4、只能存在一个,想要播放下一个音乐的时候需要将上一个穿甫扁晃壮浩憋彤铂廓销毁建议使用AVPlayer
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁2889人阅读
下面例子可以解决音频相覆盖的问题,
主要是使用NSOperationQueue,
- (void)viewDidLoad&
& & [super&viewDidLoad];
NSData&*sound1 = [NSData&dataWithContentsOfFile:[[[NSBundle&mainBundle]&bundlePath]&stringByAppendingPathComponent:@"01.mp3"]];
NSData&*sound2 = [NSData&dataWithContentsOfFile:[[[NSBundle&mainBundle]&bundlePath]&stringByAppendingPathComponent:@"07.mp3"]];
NSOperationQueue&*queue = [[NSOperationQueue&alloc]&init];
NSError&*error =&nil;
AVAudioPlayer&*player1 = [[AVAudioPlayer&alloc]&initWithData:sound1&error:&error];
AVAudioPlayer&*player2 = [[AVAudioPlayer&alloc]&initWithData:sound2&error:&error];
NSInvocationOperation&*op1 = [[[NSInvocationOperation&alloc]&initWithTarget:self&selector:@selector(playSounds:)&object:player1]&autorelease];
NSInvocationOperation&*op2 = [[[NSInvocationOperation&alloc]&initWithTarget:self&selector:@selector(playSounds:)&object:player2]&autorelease];
[queue&addOperation:op1];
[queue&addOperation:op2];
- (void)playSounds:(id)data
& &&AVAudioPlayer&*player = (AVAudioPlayer&*)
& & [player&prepareToPlay];
& & [player&play];
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:963492次
积分:10431
积分:10431
排名:第978名
原创:137篇
转载:167篇
评论:169条
(2)(4)(1)(2)(1)(7)(4)(1)(1)(9)(16)(2)(2)(5)(4)(2)(2)(2)(1)(3)(3)(6)(6)(14)(11)(28)(10)(20)(37)(4)(10)(9)(2)(6)(10)(9)(5)(1)(1)(4)(3)(1)(9)(1)(1)(4)(13)(1)(4)33074人阅读
---音视频编程(IOS)(3)
IOS开发(所有IOS文章)(73)
& & & & IOS中有三种播放音频的方式:AVAudioPlayer、音频服务、音频队列。
&& & & 此文主要讲AVAudioPlayer,其他两个请见相关文章。
AVAudioPlayer在AVFoundation框架下,所以我们要导入AVFoundation.framework。
AVAudioPlayer类封装了播放单个声音的能力。播放器可以用NSURL或者NSData来初始化,要注意的是NSURL并不可以是网络url而必须是本地文件URL,因为 & & & AVAudioPlayer不具备播放网络音频的能力,不过我们可以用过一点小手段使其具备这个能力,留待稍后讲解。
& & & & 一个AVAudioPlayer只能播放一个音频,如果你想混音你可以创建多个AVAudioPlayer实例,每个相当于混音板上的一个轨道。
一、创建一个播放器
#import &AVFoundation/AVFoundation.h&
AVAudioPlayer* player = [[AVAudioPlayer alloc]
initWithContentsOfURL:[NSURL fileURLWithPath:
[[NSBundle mainBundle]pathForResource:
@&music& ofType:@&m4a&
inDirectory:@&/&]]
error:&err ];//使用本地URL创建
AVAudioPlayer* player = [[AVAudioPlayer alloc]
initWithData:myData
error:&err ];//使用NSData创建
& & & & 我之前讲过AVAudioPlayer不可以播放网络URL,但是可以播放NSData,我们似乎受到了点启发,我们可以通过网络URL去创建NSData,然后在通过AVAudioPlayer来播放NSData,这样是不是就可以播放网络音乐了呢?但是此法并不可取,因为AVAudioPlayer只能播放一个完整的文件,并不支持流式播放,所以必须是缓冲完才能播放,所以如果网络文件过大抑或是网速不够岂不是要等很久?所以播放网络音频我们一般用音频队列。
二、播放器属性
& & & & 创建一个AVAudioPlayer以后你就可以对它的各种属性进行访问或设置了 。
player.volume=0.8;//0.0~1.0之间2.循环次数player.numberOfLoops = 3;//默认只播放一次3.播放位置player.currentTime = 15.0;//可以指定从任意位置开始播放4.声道数NSUInteger channels = player.numberOfC//只读属性5.持续时间NSTimeInterval duration = player.//获取采样的持续时间
6.仪表计数
player.meteringEnabled = YES;//开启仪表计数功能
[ player updateMeters];//更新仪表读数
//读取每个声道的平均电平和峰值电平,代表每个声道的分贝数,范围在-100~0之间。
for(int i = 0; i&player.numberOfCi++){
float power = [player averagePowerForChannel:i];
float peak = [player peakPowerForChannel:i];
三、播放声音
& & & & 准备了这么久,终于可以播放了,心情激动啊。
[ player prepareToPlay];//分配播放所需的资源,并将其加入内部播放队列
[player play];//播放
[player stop];//停止
& & & & &是否觉得准备了这么久,一下子就结束掉了,太快了,不用急,还有几个重点。
四、代理方法
& & & & & 加入播放出现异常,或者被更高级别的系统任务打断,我们的程序还没来得及收场就挂了,怎么办?不急,我们可以通过几个委托方法很好地处理所有的情形。
& & & & &首先给player设置委托是必须的:
player.delegate =- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer*)player successfully:(BOOL)flag{
//播放结束时执行的动作
- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer*)player error:(NSError *)error{
//解码错误执行的动作
- (void)audioPlayerBeginInteruption:(AVAudioPlayer*)player{
//处理中断的代码
- (void)audioPlayerEndInteruption:(AVAudioPlayer*)player{
//处理中断结束的代码
& & & & & &了解了这些,你可以尝试着做一个本地播放器。
最后贴上一个Demo:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
阅读:48127
阅读:74094
访问:871920次
积分:14245
积分:14245
排名:第508名
原创:82篇
评论:238条objective-c 音乐播放不了 使用的是AVAudioPlayer_百度知道
objective-c 音乐播放不了 使用的是AVAudioPlayer
]:(id)sender{
[player play]:nil cancelButtonTViewController.h&UIK
[player prepareToPlay]:(NSString*)mess{
UIAlertView*
alert = [[UIAlertView alloc]initWithT stringByAppendingString:(id)}@property(
[alert release]:path],retain)UIButton*}- (IBAction)setButtonC&@interface ViewController ()@end@implementation ViewController@synthesize button:src];
NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: UIViewController{
IBOutlet UIButton*} - (void)didReceiveMemoryWarning{
[super didReceiveMemoryWarning];宁夏我同时试了两台ipad其中一台是ipad3 另外一台能播放 但ipad3不能播放
我也装了qq音乐它可以播放的
#import &AVFoundation:nil];
[alert show]:(NSString*)sound/UIKit/- (void)viewDidLoad{
[super viewDidLoad];- (void)M@synthesize player:path]:@&quot,retain)AVAudioPlayer* player.mp3&@property(
player=[[AVAudioPlayer alloc] initWithContentsOfURL;assets/
NSString *src = [@&quot:nil];
IBOutlet AVAudioPlayer* player.h&确定&quot:nil message:soundUAVFoundation/- (IBAction)setButtonC otherButtonTitles:@&}- (void)M@end#import &quot.h&#import &
NSURL *soundUrl=[[NSURL alloc] initFileURLWithPath:@interface ViewController
提问者采纳
你的path对吗?alert出来是什么啊?你这个资源在bundle里面还是document下面?
路径应该没有错啊& 我试过如果文件不存在的话程序就有bug& 而且程序在另一台可运行说明程序没问题啊
那是不是歌名是汉字的问题啊!其他我就想不出了!
提问者评价
我搜索的方向是错误的一直以为是代码写错了 后来我在google输入“objective-c
没声音”就找到答案
其他类似问题
为您推荐:
音乐播放的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 swift avaudioplayer 的文章

 

随机推荐