0

嗨,我是 ios 的新手,我想制作一个播放收音机的应用程序,所以该应用程序运行良好,但是当我尝试将音量包含到应用程序时,它是 cruch 并给了我这个错误:

[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'

这是我正在使用的源代码:

在 PlayerViewController.h 中:

@interface PlayerViewController : UIViewController
{ AVAudioPlayer *radioPlayer; IBOutlet UISlider *Volume; }
- (IBAction)Volume:(id)sender;

@property (nonatomic,retain) AVAudioPlayer *radioPlayer;

在 PlayerViewController.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];

}

我有一个滑块视图,在这个滑块的操作上我有:

- (IBAction)Volume:(id)sender {
if (self.radioPlayer != nil)
{
    self.radioPlayer.volume = Volume.value;
}

}

所以请任何人都可以帮助我吗?谢谢你提前。

4

4 回答 4

1

首先检查你的函数的名称,我认为首先它是 setVolume。所以disconnet绑定并将其与Volume绑定。试试这个来改变音量

- (void)sliderValueChanged:(UISlider *)slider 
{ 
myPlayer.volume = slider.value / 100.0; 
}

并绑定你SilderUIControlEventValueChanged。行动

于 2013-05-16T08:58:05.977 回答
1

首先,您使用的是 AVPLayer 还是 AVAudioPlayer。我在问这个问题,因为

  • 你已经声明了radioPLayeras AVAudioPLayer

    @property (nonatomic,retain) AVAudioPlayer *radioPlayer;

  • 并初始化radioPlayerasAVPlayer

    self.radioPlayer = [AVPlayer playerWithPlayerItem:playerItem];

如果您打算使用 AVAudioPlayer,生活会变得轻松。使用volume物业

self.radioPlayer.volume = iSlider.value;

如果您使用的是 AVPLayer,那么您可以参考这些步骤。没有尝试过,但似乎它帮助了很多人:https ://stackoverflow.com/a/6178912/942966

于 2013-05-16T09:01:33.623 回答
0

请检查 IBAction 事件是UIControlEventValueChanged

于 2013-05-16T08:56:34.553 回答
0
self.radioPlayer.volume = Volume.value;

上面的行没有任何意义。Volume.value 表示 setVolume & 因为没有这样的方法,它给出了错误。

根据滑块移动分配值是一个不错的选择。

于 2013-05-16T09:05:56.460 回答