• ios视频播放器,代码和界面分离


      最近业余时间整理的一个ios播放器,界面采用storyboard,以前几乎都是用代码布局,但是用过一个项目storyboard后,就感觉storyboard很靠谱,团队合作版本控制的问题解决其实很简单,每个人一个storyboard就可以了。播放代码使用的是avplayer,最大的优化就是播放界面和播放代码完全分离。

    -(void)createPlayer
    {
    
        self.playBackView=[[AVPlayerDemoPlaybackView alloc] initWithFrame:viewBounds];
        [self.view addSubview:self.playBackView];
        
        self.playerManager=[[AVPlayerManager alloc] init];
        //设置url
        //self.playerManager.URL=[[NSBundle mainBundle] URLForResource:@"1" withExtension:@"mp4"];
        //self.playerManager.URL=[[NSBundle mainBundle] URLForResource:@"2" withExtension:@"mov"];
        self.playerManager.URL=[NSURL URLWithString:@"http://static.tripbe.com/videofiles/20121214/9533522808.f4v.mp4"];
        //设置播放界面
        self.playerManager.mPlaybackView=self.playBackView;
        //设置时间轴
        self.playerManager.scrubSlider=self.scrubSlider;
        //播放出错回调
        self.playerManager.failedBlock=^(NSError *error){
            if (error) {
                UIAlertView *alert=[[UIAlertView alloc] initWithTitle:[error description] message:[error debugDescription] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
                [alert show];
            }
        };
        __weak ViewController *weakself=self;
        //播放状态改变
        self.playerManager.statusChangeBlock=^(BOOL isPlaying){
            weakself.playBtn.hidden=isPlaying;
            weakself.pauseBtn.hidden=!isPlaying;
        };
        //播放结束
        self.playerManager.playEndBlock=^(){
            NSLog(@"播放结束");
        };
        //准备好播放
        self.playerManager.readyToPlayBlock=^(){
            weakself.totalTimeLabel.text=[weakself convertTimetoString:weakself.playerManager.duration];
            weakself.playBtn.enabled=YES;
            weakself.pauseBtn.enabled=YES;
            [weakself.playerManager play];
       
            
        };
        //播放过程时间改变
        self.playerManager.timeChangedBlock=^(double time)
        {
            weakself.currentTimeLabel.text=[weakself convertTimetoString:time];
        };
        //声音发生改变
        self.playerManager.volumeChangedBlock=^(){
            weakself.volumeSlider.value=weakself.playerManager.volume;
        };
        //缓冲时间
        self.playerManager.bufferChangedBlock=^(double buffered){
            weakself.processBar.progress=buffered/weakself.playerManager.duration;
            weakself.speedLabel.text=[NSString stringWithFormat:@"%0.0fkb/s",weakself.playerManager.bufferSpeed];
        };
        
        //初始化完毕,准备播放
        [self.playerManager prepare];
       
        
    }
    

      

         

    代码下载:http://pan.baidu.com/s/1eyVMm

  • 相关阅读:
    JSP自定义标签_用简单标签控制标签体执行10次
    JSP自定义标签_用简单标签实现控制标签体是否执行
    eclipse 使用lombok 精简java bean
    转 :关于springmvc使用拦截器
    转: spring静态注入
    spring 4.0+quartz2.2 实现持久化
    排除maven jar冲突 maven tomcat插件启动报错 filter转换异常
    转 Quartz将Job持久化所需表的说明
    转 maven jetty 插件
    ORA-14300: 分区关键字映射到超出允许的最大分区数的分区
  • 原文地址:https://www.cnblogs.com/bandy/p/4334747.html
Copyright © 2020-2023  润新知