Iphone AVAudioPlayer卷
嗨,我是ios新手,我想制作一个可以播放广播的应用程序,因此该应用程序工作正常,但当我尝试将音量包含到该应用程序中时,它很糟糕,并给了我以下错误:Iphone AVAudioPlayer卷,iphone,ios,Iphone,Ios,嗨,我是ios新手,我想制作一个可以播放广播的应用程序,因此该应用程序工作正常,但当我尝试将音量包含到该应用程序中时,它很糟糕,并给了我以下错误: [AVPlayer setVolume:]: unrecognized selector sent to instance 0x9d4f500 2013-05-16 09:34:47.785 RadioFM[22061:12503] *** Terminating app due to uncaught exception 'NSInvalidArg
[AVPlayer setVolume:]: unrecognized selector sent to instance 0x9d4f500
2013-05-16 09:34:47.785 RadioFM[22061:12503] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[AVPlayer setVolume:]: unrecognized selector sent to instance 0x9d4f500'
这是我正在使用的源代码:
在playervewcontroller.h中:
@interface PlayerViewController : UIViewController
{ AVAudioPlayer *radioPlayer; IBOutlet UISlider *Volume; }
- (IBAction)Volume:(id)sender;
@property (nonatomic,retain) AVAudioPlayer *radioPlayer;
在playervewcontroller.m中:
@synthesize radioPlayer;
- (void)viewDidLoad
{
NSString *RadStream=<@Radio stream>;
NSURL *url=[NSURL URLWithString:RadStream];
NSError *error;
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:url];
self.radioPlayer = [AVPlayer playerWithPlayerItem:playerItem];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&error];
[[AVAudioSession sharedInstance] setActive: YES error: nil];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self.radioPlayer play];
[super viewDidLoad];
}
有人能帮我吗?提前感谢。请检查iAction事件是否为
UIControlEventValueChanged
首先检查您的函数名称,我想首先是setVolume。因此,请断开网络绑定并将其与卷绑定。然后试试这个来改变音量
- (void)sliderValueChanged:(UISlider *)slider
{
myPlayer.volume = slider.value / 100.0;
}
并使用
UIControlEventValueChanged
绑定您的Silder
。动作首先,您使用的是AVPLayer还是AVAudioPlayer。
我在问这个问题,因为
- 您已将
声明为radioPLayer
@属性(非原子,保留)AVAudioPlayer*radioPlayerAVAudioPLayer
- 并将
初始化为radioPlayer
self.radioPlayer=[AVPlayer playerWithPlayerItem:playerItem]AVPlayer
卷
属性
self.radioPlayer.volume = iSlider.value;
如果您使用的是AVPLayer,则可以参考以下步骤。没有尝试过,但似乎它帮助了很多人:
上面这一行没有任何意义。Volume.value表示setVolume&因为没有这样的方法,所以它给出了错误
根据滑块移动指定值是一个很好的方法。检查函数名称,我认为首先是
setVolume
。因此,请断开网络绑定并将其与卷
绑定。试着改变音量-(void)sliderValueChanged:(UISlider*)slider{myPlayer.volume=slider.value/100.0;}
实际上它不是setVolume,为了验证这一点,我只是以编程方式创建了一个新的UISlider,调用了您上面编写的函数,并一直给我相同的错误,新的源代码是:is viewdidload methode我创建了一个新的uislider,并调用了上面的methode。尝试根据滑块移动来分配值是因为我试图做的,而且当我尝试将音量分配给无线电播放器时,硬编码的方法不起作用,如self.radioPlayer.volume=0.8代码>例如。是的,它是UIControlEventValueChanged。如果我试图打印uisilder的值,则会按预期打印这些值。是的,您所说的是正确的,我声明radioPLayer为AVAudioPLayer
,我将其初始化为AVAudioPLayer
,因为playerWithPlayerItem:playerItem
不适用于AVAudioPLayer
,并且当我尝试使用[[AVAudioPlayer alloc]initWithContentsOfURL:url错误:&错误]
收音机甚至不播放,我不知道AVPlayer
是否不支持该流或什么!!AVAudioPLayer
不能用于流媒体播放。AVPlayer
必须使用。所以继续,将radioPlayer
声明为AVPlayer
。但是,音量不能在AVPlayer中设置,所以改为使用连接到我提到的链接,并尝试使用AudioMix
进行设置
self.radioPlayer.volume = iSlider.value;
self.radioPlayer.volume = Volume.value;