视频播放Tips

作者: Oneruofeng | 来源:发表于2016-12-08 23:40 被阅读52次

主要涉及到Tips:

  • 获取设备音量
  1. 静音模式失效
  2. 监听音量改变
  3. 设置设备音量
  4. 监听静音按钮
  5. 监听耳机拔插

1.获取设备音量

播放音频可以通过:

MPMusicPlayerController *iPod = [MPMusicPlayerController systemMusicPlayer];
float volumeLevel = iPod.volume;

播放视频可以通过:

float outputVolume = [[AVAudioSession sharedInstance] outputVolume];

推荐下面的方法,上面的在某些版本可能有问题,下面的方法兼容iOS6及以上

2.静音模式失效

通过设置音频会话的category实现:

NSError *setCategoryError = nil;
BOOL success = [[AVAudioSession sharedInstance]
                    setCategory: AVAudioSessionCategoryPlayback
                    error: &setCategoryError];
    
if (!success) { /* handle the error in setCategoryError */ }

这样App就不会随着手机静音键打开而静音,可在手机静音下播放声音😁

3.监听音量改变

监听音频改变私有通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(volumeChanged:) name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil];

实现通过回调:

- (void)volumeChanged:(NSNotification *)notification
{
    float volume = [[[notification userInfo] objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"]
     floatValue];
     
     // do something
}

4.设置设备音量

使用MPVolumeView类,便利它的子views找到类为MPVolumeSlider的滑竿。

MPVolumeView *volumeView = [[MPVolumeView alloc] init];
UISlider *volumeViewSlider = nil;
    for (UIView *view in [volumeView subviews]){
        if ([view.class.description isEqualToString:@"MPVolumeSlider"]){
            volumeViewSlider = (UISlider *)view;
            break;
        }
    }

然后再通过设置volumeViewSlidervalue即可。

_volumeViewSlider.value = someVolume;

5.监听静音按钮

参考Sound Switch - Sharkfood的实现。

使用很简单,判断是否为静音模式:

if ([SharkfoodMuteSwitchDetector shared].isMute) {
    // do something
}

动态监听,通过block回调:

[SharkfoodMuteSwitchDetector shared].silentNotify = ^(BOOL silent){
      // do something
};

6.监听耳机拔插

监听AVAudioSessionRouteChangeNotification通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(audioRouteChangeListenerCallback:) name:AVAudioSessionRouteChangeNotification object:nil];

实现回调:

- (void)audioRouteChangeListenerCallback:(NSNotification*)notification
{
    NSDictionary *interuptionDict = notification.userInfo;
    
    NSInteger routeChangeReason = [[interuptionDict valueForKey:AVAudioSessionRouteChangeReasonKey] integerValue];
    switch (routeChangeReason) {
        case AVAudioSessionRouteChangeReasonNewDeviceAvailable:
            // 耳机插入
            break;
            
        case AVAudioSessionRouteChangeReasonOldDeviceUnavailable:
            // 耳机拔掉
            break;
            
        case AVAudioSessionRouteChangeReasonCategoryChange:
            // called at start - also when other audio wants to play
            NSLog(@"AVAudioSessionRouteChangeReasonCategoryChange");
            break;
    }
}

相关文章

  • 视频播放Tips

    主要涉及到Tips: 获取设备音量 静音模式失效 监听音量改变 设置设备音量 监听静音按钮 监听耳机拔插 1.获取...

  • 视频TIPS

    https://www.youtube.com/watch?v=DSoJDO1d0Tw 1. 高低模烘焙,主要得到...

  • 初级视频播放功能

    打开相册选择视频 使用系统播放器播放视频 使用VideoView播放视频 使用SurfaceView播放视频 vo...

  • 3.4 音频播放.视频播放.相册调用.相机调用

    音频播放.视频播放.相册调用.相机调用 音频播放 视频播放 相册调用 视频音频资源 视频音频资源.png

  • Google对话设计系列(三)

    设计原则与方法论 Tips 以下为设计tips视频的主要内容,视频链接:https://www.youtube.c...

  • ios 录音,播放 tips

    背景 最近在做iOS录音相关东西,也遇到了一些坑,顺便记录下。 正文 系统自带的AVFoundation框架,提供...

  • 视频播放器

    系统播放器 打开视频列表 调用系统播放器播放视频 调用系统播放器播放网络视频 VideoView播放器 调用 V...

  • Android中流媒体和传感器

    一、音频播放 1)MediaPlayer Tips:该播放器同时只能播放一个音乐文件,文件大小并没有限制。 Tip...

  • 视频播放

  • 视频播放

    import "ViewController.h" import "ZSPlayerView.h" @interf...

网友评论

    本文标题:视频播放Tips

    本文链接:https://www.haomeiwen.com/subject/kqqemttx.html