zoukankan      html  css  js  c++  java
  • MPMovieplayerController添加新控件

    1.计算使用MPMoviePlayerController播放的视频的长度有两种方法:


    第一种方法

     

    NSDictionary *opts = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO]                                           forKey:AVURLAssetPreferPreciseDurationAndTimingKey]; 

    AVURLAsset *urlAsset = [AVURLAssetURLAssetWithURL:videoUrloptions:opts]; 

    NSInteger totalSecond = urlAsset.duration.value / urlAsset.duration.timescale; 

    使用上述代码需要插入AVFoundation框架。播过我用这种方法计算视频长度时,会延迟其后代码的执行,不知道什么原因。


    第二种方法

    使用MPMoviePlayerController的duration属性,当MPMoviePlayerController的duration未知时默认为0.0,如果duration确定,会发送MPMovieDurationAvailableNotification通知,接着duration的值将会更新为播放视频的长度,单位是秒。


    2.视频什么时候开始播放


    当视频开始播放时会发送MPMediaPlaybackIsPreparedToPlayDidChangeNotification,所以你只需要在注册

    MPMediaPlaybackIsPreparedToPlayDidChangeNotification通知,当接收到此通知说明视频开始播放。


    3.自定义播放器视图时怎么自定义声音控件


    使用MPVolumeView控制系统的声音大小。通过改变MPVolumeView slider的值可以改变系统的声音,同时通过调节系统的声音按钮,slider的值也会跟着改变。

     

    volumeView = [[MPVolumeView alloc] initWithFrame:CGRectMake(310, 180, 100, 20)];

    volumeView.showsVolumeSlider = YES;

    [backView addSubview:volumeView];

    [volumeView release];


    4.通过presentModalViewController调出MPMoviePlayer所在控制器,当通过 dismissModalViewController移除控制器时,手机的状态栏可能会消失。解决办法:在 dismissModalViewController调用函数

    movieplayer.controlStyle = MPMovieControlStyleFullScreen;

     

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, delay * NSEC_PER_SEC), dispatch_get_current_queue(), ^{

            [UIApplication sharedApplication].statusBarHidden = NO;

        });


    5. 

    如何向MPMovieplayerController的控制栏添加新的控件

     

    可以对它的moviePlayer.view遍历subviews,遍历到第三级有个 MPFullscreenOverlay,这个就是当你点击播放界面时的出现的悬浮层,遍历到第四级有一个subview就是 MPTransparentControls这个类,这个就是快退/播放/快进的那个面板,你可以对这个view进行addSubview。
    至于判断这个面板的显隐,可以对MPFullscreenOverlay的alpha属性用KVO进行跟踪。

    MPMoviePlayerController的view上直接添加这些控件即可。
  • 相关阅读:
    Mac 升级后 Git报错处理
    iOS 进制转换(十进制转62进制)
    转:基于IOS上MDM技术相关资料整理及汇总
    NPM ERR! 403 403 Forbidden 问题处理
    Rxjs学习,结合angular(搁置,后续还会添加)
    如何快速关联/修改Git远程仓库地址
    VUE 路由守卫 next() / next({ ...to, replace: true }) / next(‘/‘) 说明
    chrome developer tools 的一個 bug
    IBM MQ 2035错误
    tp5 gateway 报错 stream_socket_client(): unable to connect to tcp://127.0.0.1:1236 (Connection refused)
  • 原文地址:https://www.cnblogs.com/shuxiachahu123/p/5354842.html
Copyright © 2011-2022 走看看