zoukankan      html  css  js  c++  java
  • 音频视频

    一、音频
    音乐播放用到一个叫做AVAudioPlayer的类,这个类可以用于播放手机本地的音乐文件。
    AVAudioPlayer类依赖于AVFoundation框架,因此使用该类必须先导入AVFoundation框架,并包含其头文件(包含主头文件即可)。
    //1.音乐文件的路径
    NSString *urlString = [[NSBundle mainBundle] pathForResource:@"王绎龙-邻家美眉" ofType:@"mp3"];
    //2.转化成本地路径
    NSURL *url = [NSURL fileURLWithPath:urlString];
    //3.创建播放对象
    _audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
    //5.记录音乐的总时长   duration声音的持续时间
    @property(readonly) NSTimeInterval duration;
    //6.设置音量的大小
    @property float volume
    设置播放次数
     @property float numberOfLoops = 0;
     
    //播放   暂停 停止
    • (BOOL)play;
    • (void)pause;
    • (void)stop;
    //播放进度的改变
    @property NSTimeInterval currentTime;
     
    代码:
    //    添加背景图片
        imageview = [[UIImageView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

        imageview.image = [UIImage imageNamed:@"1.jpg"];
        [self.view addSubview:imageview];
    //    添加播放按钮
        btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        btn.frame = CGRectMake(150, 180, 100, 100);
        btn.tintColor = [UIColor redColor];
        [btn setTitle:@"播放" forState:UIControlStateNormal];
        [btn addTarget:self action:@selector(btnAction:) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:btn];
    //    添加暂停按钮
        btn1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        btn1.frame = CGRectMake(180, 380, 100, 100);
        btn1.tintColor = [UIColor redColor];
        [btn1 setTitle:@"暂停" forState:UIControlStateNormal];
        [btn1 addTarget:self action:@selector(btn1Action:) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:btn1];
    //    添加停止按钮
        btn2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        btn2.frame = CGRectMake(130, 380, 30, 100);
        btn2.tintColor = [UIColor redColor];
        [btn2 setTitle:@"停止" forState:UIControlStateNormal];
        [btn2 addTarget:self action:@selector(btn2Action:) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:btn2];
    //播放事件
    -(void)btnAction:(UIButton *)bt
    {
        if (player == nil){
        NSString *path = [[NSBundle mainBundle]pathForResource:@"王绎龙-邻家美眉" ofType:@"mp3"];
        NSURL *url = [NSURL fileURLWithPath:path];
       
        player = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:nil];
        }
    //    开始播放
        [player play];

    }
    //暂停播放事件
    -(void)btn1Action:(UIButton *)bt1
    {
    //    暂停播放
        [player pause];
       
    }
    //停止播放事件
    -(void)btn2Action:(UIButton *)bt2
    {
    //    播放停止
        [player stop];
        player = nil;
    }
     
       ///////////音频代码(block方法)功能////////////
     
    - (void)viewDidLoad {
        [super viewDidLoad];
       
        dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
        dispatch_async(queue, ^{
            // 创建一个定时器
            [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerAction:) userInfo:nil repeats:YES];
           
            // 保持线程活跃
            [[NSRunLoop currentRunLoop] run];
        });

    //    播放
        play1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        play1.frame = CGRectMake(30, 360, 90, 35);
        play1.backgroundColor = [UIColor redColor];
        [play1 setTitle:@"播放" forState:UIControlStateNormal];
        [play1 addTarget:self action:@selector(playAction:) forControlEvents:UIControlEventTouchUpInside];
       
        [self.view addSubview:play1];
    //    停止播放
        stop = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        stop.frame = CGRectMake(30, 260, 90, 35);
        stop.backgroundColor = [UIColor redColor];
        [stop setTitle:@"停止" forState:UIControlStateNormal];
        [stop addTarget:self action:@selector(stopAction:) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:stop];
    //    暂停播放
        pause = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        pause.frame = CGRectMake(30, 160, 90, 35);
        pause.backgroundColor = [UIColor redColor];
        [pause setTitle:@"暂停" forState:UIControlStateNormal];
        [pause addTarget:self action:@selector(pauseAction:) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:pause];
    //    声音UILabel
        sound = [[UILabel alloc] initWithFrame:CGRectMake(90, 210, 100, 20)];
        sound.text = @"声音:";
        [self.view addSubview:sound];
    //    声音UISlider
        audioPlayer = [[UISlider alloc] initWithFrame:CGRectMake(150, 170, 200, 100)];
        [audioPlayer addTarget:self action:@selector(audioSilderChanged:) forControlEvents:UIControlEventValueChanged];
       
        [self.view addSubview:audioPlayer];
    //    进度UISlider
        _timeSlider = [[UISlider alloc] initWithFrame:CGRectMake(160, 270, 150, 100)];
        [_timeSlider addTarget:self action:@selector(timeSliderChanged:) forControlEvents:UIControlEventValueChanged];
        [self.view addSubview:_timeSlider];
    //    当前进度
        _startTimeLabel = [[UILabel alloc] initWithFrame:CGRectMake(130, 270, 100, 100)];
        [self.view addSubview:_startTimeLabel];
    //    音乐总长
        _endTimeLabel = [[UILabel alloc] initWithFrame:CGRectMake(320, 270, 100, 100)];
        [self.view addSubview:_endTimeLabel];
        _audioPlayer.delegate = self;
       
     
    }
    - (void)timerAction:(NSTimer *)timer
    {
        // 回到主线程刷新UI
        dispatch_async(dispatch_get_main_queue(), ^{
            _startTimeLabel.text = [NSString stringWithFormat:@"%d",(int)_audioPlayer.currentTime];
            _timeSlider.value = _audioPlayer.currentTime;
        });
    }

    -(void)pauseAction:(UIButton *)pause{
        [_audioPlayer pause];
    }
    -(void)stopAction:(UIButton *)stop{
        [_audioPlayer stop];
        _audioPlayer = nil;
    }
    -(void)audioSilderChanged:(UISlider *)audio{
        UISlider *slider = (UISlider *)audioPlayer;
        // 7.设置音量的大小
        _audioPlayer.volume = slider.value;
       
       
    }
    -(void)playAction:(UIButton *)pl{
        if (_audioPlayer == nil) {
            // 1.音乐文件的路径
            NSString *urlString = [[NSBundle mainBundle] pathForResource:@"王绎龙-邻家美眉" ofType:@"mp3"];
            // 2.转化成本地路径
            NSURL *url = [NSURL fileURLWithPath:urlString];
            // 3.创建播放对象
            _audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
            _audioPlayer.numberOfLoops = -1;

            // 5.记录音乐的总时长  duration声音的持续时间
            _startTimeLabel.text = @"0";
            //    音乐总长UILabel
            _endTimeLabel.text = [NSString stringWithFormat:@"%d",(int)_audioPlayer.duration];
            // 6.设置滑条的参数
            _timeSlider.minimumValue = 0;
            _timeSlider.maximumValue = _audioPlayer.duration;
            // 7.设置音量的大小
            _audioPlayer.volume = 0.0;
        }
       
        // 5.播放
        [_audioPlayer play];
    }
    -(void)timeSliderChanged:(UISlider *)time{
        // 播放进度的改变
        _audioPlayer.currentTime = _timeSlider.value;
    }
    @end
     
       /////////音频(系统)///////////
    -----设置支持后台播放------
        NSError *error;
        AVAudioSession *audionSession = [AVAudioSession sharedInstance];
        [audionSession setCategory:AVAudioSessionCategoryPlayback error:&error];
       
       
        // 1.获取音频的url
        NSString *urlString = @"http://yinyueshiting.baidu.com/data2/music/122092051/693143255600128.mp3?xcode=fcdab48f5e8e1bfeabce6f1886feb9701b23d208676f9a7d";
        NSURL *url = [NSURL URLWithString:urlString];
       
        // 2.创建播放对象
        // 01.创建播放元素
        _playerItem = [[AVPlayerItem alloc] initWithURL:url];
        _player = [[AVPlayer alloc] initWithPlayerItem:_playerItem];
       
        // 播放
        [_player play];
       
        // 暂停
    //    [_player pause];
       
        */
       
       
        // 3.注册系统声音 (测试一些系统功能的时候,模拟器可能不好使)
        // 1.获取路径
        NSString *urlString = [[NSBundle mainBundle] pathForResource:@"44th Street Medium" ofType:@"caf"];
        NSURL *fileUrl = [NSURL fileURLWithPath:urlString];
       
        // 2.创建创建系统生意的标识
        SystemSoundID soundID ;
        // 3.注册系统声音
        AudioServicesCreateSystemSoundID((__bridge CFURLRef)fileUrl, &soundID)
        ;
       
        // 4.播放
        AudioServicesPlaySystemSound(soundID);
       
        // 设置震动
        AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
       
    }

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    {
        // 获取音乐的总时长
        NSLog(@"%lld",_playerItem.duration.value/_playerItem.duration.timescale);
    }
     
    ///////////音频(代理方式)////////////
     
    button(play、stop、pause暂停)略写
    //从budle路径下读取音频文件  轻音乐 - 萨克斯回家这个文件名是你的歌曲名字,mp3是你的音频格式
             NSString *string = [[NSBundle mainBundle] pathForResource:@"王绎龙-邻家美眉" ofType:@"mp3"];
             //把音频文件转换成url格式
             NSURL *url = [NSURL fileURLWithPath:string];
             //初始化音频类 并且添加播放文件
             avAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
             //设置代理
             avAudioPlayer.delegate = self;
       
             //设置初始音量大小
            // avAudioPlayer.volume = 1;
       
             //设置音乐播放次数  -1为一直循环
             avAudioPlayer.numberOfLoops = 0;
       
         //预播放
             [avAudioPlayer prepareToPlay];
       
             //初始化一个播放进度条
             progressV = [[UIProgressView alloc] initWithFrame:CGRectMake(20, 50, 200, 20)];
             [self.view addSubview:progressV];
       
       
             //用NSTimer来监控音频播放进度
             timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self
                selector:@selector(playProgress)
    userInfo:nil repeats:YES];
             //初始化音量控制
             volumeSlider = [[UISlider alloc] initWithFrame:CGRectMake(20, 70, 200, 20)];
             [volumeSlider addTarget:self action:@selector(volumeChange)
                forControlEvents:UIControlEventValueChanged];
             //设置最小音量
             volumeSlider.minimumValue = 0.0f;
             //设置最大音量
             volumeSlider.maximumValue = 10.0f;
             //初始化音量为多少
             volumeSlider.value = 5.0f;
       
             [self.view addSubview:volumeSlider];
       
       
             //声音开关控件(静音)
             UISwitch *swith = [[UISwitch alloc] initWithFrame:CGRectMake(100, 20, 60, 40)];
             [swith addTarget:self action:@selector(onOrOff:) forControlEvents:UIControlEventValueChanged];
             //默认状态为打开
             swith.on = YES;
             [self.view addSubview:swith];
    }
    - (void)play
    {
        [avAudioPlayer play];
    }
    - (void)pause
    {
        [avAudioPlayer pause];
    }
    - (void)stop
    {
        avAudioPlayer.currentTime = 0;
        [avAudioPlayer stop];
    }
    - (void)playProgress
    {
        progressV.progress = avAudioPlayer.currentTime/avAudioPlayer.duration;
    }
    - (void)onOrOff:(UISwitch *)sender
    {
        avAudioPlayer.volume = sender.on;
    }
    - (void)volumeChange
    {
         avAudioPlayer.volume = volumeSlider.value;
    }
    //播放完成时调用的方法  (代理里的方法),需要设置代理才可以调用
    - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
    {
             [timer invalidate]; //NSTimer暂停  invalidate  使...无效;
        NSLog(@"播放结束才会调用");
    }
     
    二、视频
    MPMoviePlayerControlle想要实现视频播放也得导入库文件MediaPlayer.framework
    //导入头文件
    #import <MediaPlayer/MediaPlayer.h>
        // 1.自定义播放视图的大小
        MPMoviePlayerController *_mpPlayerController;
    //  
        // 1.自定义播放界面
    //创建播放对象
        _mpPlayerController = [[MPMoviePlayerController alloc] initWithContentURL:url];
        // 设置播放视图的大小
    _mpPlayerController.view.frame = CGRectMake(20, 20, 320, 140);
    //添加的时候要注意_mpPlayerController.view
        [self.view addSubview:_mpPlayerController.view];
        }
        // 播放
        [_mpPlayerController play];
    代码:
    //    弹出播放
        Broadcast = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        Broadcast.frame = CGRectMake(150, 170, 100, 100);
        Broadcast.tintColor = [UIColor redColor];
        [Broadcast setTitle:@"播放" forState:UIControlStateNormal];
        [Broadcast addTarget:self action:@selector(begingAction:) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:Broadcast];
    //    暂停
        Broadcast1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        Broadcast1.frame = CGRectMake(150, 260, 100, 100);
        Broadcast1.tintColor = [UIColor redColor];
        [Broadcast1 setTitle:@"暂停" forState:UIControlStateNormal];
        [Broadcast1 addTarget:self action:@selector(begingAction1:) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:Broadcast1];
    //    停止
        Broadcast2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        Broadcast2.frame = CGRectMake(150, 360, 100, 100);
        Broadcast2.tintColor = [UIColor redColor];
        [Broadcast2 setTitle:@"停止" forState:UIControlStateNormal];
        [Broadcast2 addTarget:self action:@selector(begingAction2:) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:Broadcast2];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(exitFullScreen:) name: MPMoviePlayerDidExitFullscreenNotification object:nil];
    }
    -(void)begingAction:(UIButton *)beging
    {
        if (_mpPlayerController == nil){
        // 1.自定义播放界面
        NSURL *url = [NSURL URLWithString:@"http://vf1.mtime.cn/Video/2012/04/23/mp4/120423212602431929.mp4"];
        _mpPlayerController = [[MPMoviePlayerController alloc] initWithContentURL:url];
        // 设置播放视图的大小
        _mpPlayerController.view.frame = CGRectMake(20, 20, 320, 140);
        [self.view addSubview:_mpPlayerController.view];
        }
        // 播放
        [_mpPlayerController play];
    }
    -(void)begingAction1:(UIButton *)beging1
    {
        [_mpPlayerController pause];
    }
    -(void)begingAction2:(UIButton *)beging2
    {
        [_mpPlayerController stop];
        _mpPlayerController = nil;
    }
    -(void)exitFullScreen:(NSNotification *)notification{
        [mpc.view removeFromSuperview];
        NSLog(@"remove player");
    }
    @end
  • 相关阅读:
    android 75 新闻列表页面
    android 74 下载文本
    android 73 下载图片
    android 72 确定取消对话框,单选对话框,多选对话框
    android 71 ArrayAdapter和SimpleAdapter
    android 70 使用ListView把数据显示至屏幕
    maven如何将本地jar安装到本地仓库
    Centos6.7搭建ISCSI存储服务器
    解决maven打包编译出现File encoding has not been set问题
    MySQL 解决 emoji表情 的方法,使用utf8mb4 字符集(4字节 UTF-8 Unicode 编码)
  • 原文地址:https://www.cnblogs.com/wxzboke/p/5044106.html
Copyright © 2011-2022 走看看