zoukankan      html  css  js  c++  java
  • 电影播放

    #import "ViewController.h"
    #import <AVFoundation/AVFoundation.h>
    @interface ViewController (){
    AVPlayer *player;
    UISlider *slider;
    UILabel *label;
    UISlider *volumeSlider;
    }

    @end

    @implementation ViewController

    - (void)viewDidLoad {
    [super viewDidLoad];
    NSString *urlPath=[[NSBundle mainBundle]pathForResource:@"01-搭建基本界面" ofType:@"mp4"];
    NSURL *url=[[NSURL alloc]initFileURLWithPath:urlPath];
    // NSString *urlPath=@"http://share.vrs.sohu.com/2516501/v.swf&topBar=1&autoplay=false&plid=6986106&pub_catecode=0&from=page";
    // NSURL *url=[[NSURL alloc]initWithString:urlPath];

    //AVURLAsset继承自AVASet,媒体的抽象类
    AVURLAsset *movieAsset=[[AVURLAsset alloc]initWithURL:url options:nil];
    //资源管理对象以及演示设置(资源缓冲状态)
    AVPlayerItem *playerItem=[AVPlayerItem playerItemWithAsset:movieAsset];
    //播放器
    player=[AVPlayer playerWithPlayerItem:playerItem];
    AVPlayerLayer *layer=[AVPlayerLayer playerLayerWithPlayer:player];
    layer.frame=self.view.frame;
    layer.videoGravity=AVLayerVideoGravityResizeAspect;
    [self.view.layer addSublayer:layer];
    [playerItem addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionNew context:nil];
    //显示黑条
    UIView *blackView=[[UIView alloc]initWithFrame:CGRectMake(0, (self.view.frame.size.height-30), self.view.frame.size.width,self.view.frame.size.height)];
    blackView.backgroundColor=[UIColor grayColor];
    //进度条
    slider=[[UISlider alloc]initWithFrame:CGRectMake(40,280, 400,50)];
    slider.value=0;
    slider.minimumValue=0;
    slider.maximumValue=1;
    [slider setMinimumTrackImage:[UIImage imageNamed:@"播放进度条2"] forState:0];
    [slider setMaximumTrackImage:[UIImage imageNamed:@"播放进度条"] forState:0];
    [slider setThumbImage:[UIImage imageNamed:@"进度滑块"] forState:UIControlStateNormal];
    [slider addTarget:self action:@selector(changeProgress:) forControlEvents:UIControlEventTouchUpInside];
    //label
    label=[[UILabel alloc]initWithFrame:CGRectMake(440, 285, 100 , 40)];
    label.font=[UIFont systemFontOfSize:15];
    //label.backgroundColor=[UIColor redColor];

    //播放/暂停
    UIButton *stopButton=[UIButton buttonWithType:UIButtonTypeCustom];
    stopButton.frame=CGRectMake(10, 288, 30, 35);
    [stopButton setImage:[UIImage imageNamed:@"播放按钮"] forState:UIControlStateNormal];
    [stopButton addTarget:self action:@selector(doMovie:) forControlEvents:UIControlEventTouchUpInside];
    //音量
    //UISlider *volumeSlider=[[UISlider alloc]initWithFrame:CGRectMake(540, 285, 30, 28)];
    UIButton *volumeButton=[UIButton buttonWithType:UIButtonTypeCustom];
    [volumeButton setImage:[UIImage imageNamed:@"音量"] forState:UIControlStateNormal];
    volumeButton.frame=CGRectMake(530, 290, 35, 35);
    [volumeButton addTarget:self action:@selector(doVolume:) forControlEvents:UIControlEventTouchUpInside];

    volumeSlider=[[UISlider alloc]initWithFrame:CGRectMake( 500, 240, 100,20)];
    //旋转90度
    volumeSlider.transform=CGAffineTransformMakeRotation(M_PI*1.5);
    volumeSlider.minimumValue=0;
    volumeSlider.maximumValue=1;
    volumeSlider.value=0.1;
    volumeSlider.hidden=YES;
    [volumeSlider setThumbImage:[UIImage imageNamed:@"音量滑块"] forState:UIControlStateNormal];
    [volumeSlider addTarget:self action:@selector(doChangeVolumeValue:) forControlEvents:UIControlEventValueChanged];


    [self.view addSubview:blackView];
    [self.view addSubview:slider];
    [self.view addSubview:label];
    [self.view addSubview:stopButton];
    [self.view addSubview:volumeButton];
    [self.view addSubview:volumeSlider];


    }
    -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
    if ([keyPath isEqualToString:@"status"]) {
    if (AVPlayerItemStatusReadyToPlay==player.currentItem.status) {
    [player play];
    [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(showMovieTime:) userInfo:nil repeats:YES];
    }
    }
    }
    -(void)doChangeVolumeValue:(UISlider *)sender{
    player.volume=sender.value;
    }
    -(void)doVolume:(UIButton *)sender{
    static BOOL isAppear=YES;
    if (isAppear) {
    volumeSlider.hidden=NO;
    isAppear=!isAppear;
    }
    else {
    volumeSlider.hidden=YES;
    isAppear=!isAppear;
    }

    }
    -(void)doMovie:(UIButton *)sender{//暂停播放
    static BOOL isOk=YES;
    if (isOk) {
    [player pause];
    [sender setImage:[UIImage imageNamed:@"暂停按钮"] forState:UIControlStateNormal];

    isOk=!isOk;
    }
    else{
    [player play];
    [sender setImage:[UIImage imageNamed:@"播放按钮"] forState:UIControlStateNormal];
    isOk=!isOk;
    }

    }
    -(void)changeProgress:(UISlider *)sender{
    float sliderValue=sender.value;
    float allTime=[self playerDuration];

    CMTime changeTime=CMTimeMake(sliderValue*allTime, 1);
    [player.currentItem seekToTime:changeTime];
    }
    -(NSTimeInterval)playerDuration{
    AVPlayerItem *item=player.currentItem;
    if (item.status==AVPlayerItemStatusReadyToPlay) {
    return CMTimeGetSeconds(item.duration);
    }
    return 0;
    }
    -(NSTimeInterval)playerCurrentime{
    AVPlayerItem *item=player.currentItem;
    if (item.status==AVPlayerItemStatusReadyToPlay) {
    return CMTimeGetSeconds(item.currentTime);
    }
    return 0;
    }
    -(void)showMovieTime:(NSTimer *)timer{
    float allTime=[self playerDuration];
    float currentime=[self playerCurrentime];
    int allM=(int)allTime/60;
    int allS=(int)allTime %60;
    int currentS=(int)currentime %60;
    int currentM=currentime /60;



    NSString *timeString=[NSString stringWithFormat:@"%02d:%02d/%02d:%02d",currentM,currentS,allM,allS];
    label.text=timeString;


    }

    @end

  • 相关阅读:
    NYOJ 625 笨蛋的难题(二)
    NYOJ 102 次方求模
    ZJU Least Common Multiple
    ZJUOJ 1073 Round and Round We Go
    NYOJ 709 异形卵
    HDU 1279 验证角谷猜想
    BNUOJ 1015 信息战(一)——加密程序
    HDU 1202 The calculation of GPA
    "蓝桥杯“基础练习:字母图形
    "蓝桥杯“基础练习:数列特征
  • 原文地址:https://www.cnblogs.com/OIMM/p/4779214.html
Copyright © 2011-2022 走看看