1. 程式人生 > >IOS 實現音訊視訊播放器功能

IOS 實現音訊視訊播放器功能

//音訊播放器
//  ViewController.h
//  AVAudioPlayer
//
//  Created by mouweng on 17/8/26.
//  Copyright © 2017年 mouweng. All rights reserved.
//

#import <UIKit/UIKit.h>
//匯入音訊播放系統庫檔案
#import <AVFoundation/AVFoundation.h>
@interface ViewController : UIViewController<AVAudioPlayerDelegate>//音訊播放協議
{
    //播放暫停停止按鈕
    UIButton *_btnPlay;
    UIButton *_btnPause;
    UIButton *_btnStop;
    
    UIProgressView *_musicProgress;  //音樂播放進度
    UISlider *_volumeSlider;         //聲音大小調整滑動條
    UISwitch *_volumeOn;             //靜音開關
    
    AVAudioPlayer *_player ;         //音訊播放器
    NSTimer *_timer;                 //定義一個定時器,可以跟進進度
}

@end
//
//  ViewController.m
//  AVAudioPlayer
//
//  Created by mouweng on 17/8/26.
//  Copyright © 2017年 mouweng. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    
    
    _btnPlay = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    _btnPlay.frame = CGRectMake(100, 100, 100, 40);
    [_btnPlay setTitle:@"播放" forState:UIControlStateNormal];
    [_btnPlay addTarget:self action:@selector(pressPlay) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:_btnPlay];
    
    _btnPause = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    _btnPause.frame = CGRectMake(100, 160, 100, 40);
    [_btnPause setTitle:@"暫停" forState:UIControlStateNormal];
    [_btnPause addTarget:self action:@selector(pressPause) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:_btnPause];
    
    _btnStop = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    _btnStop.frame = CGRectMake(100, 220, 100, 40);
    [_btnStop setTitle:@"停止" forState:UIControlStateNormal];
    [_btnStop addTarget:self action:@selector(pressStop) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:_btnStop];
    
    //建立進度條
    _musicProgress = [[UIProgressView alloc] initWithFrame:CGRectMake(10, 300, 300, 20)];
    _musicProgress.progress = 0;
    [self.view addSubview:_musicProgress];

    //建立聲音條
    _volumeSlider = [[UISlider alloc] initWithFrame:CGRectMake(10, 380, 300, 20)];
    _volumeSlider.maximumValue = 100;
    _volumeSlider.minimumValue = 0;
    _volumeSlider.value = 50;
    [_volumeSlider addTarget:self action:@selector(volumeChange:) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:_volumeSlider];
    
    _player.delegate = self;
    
    [self createPlayer];
}

//當音樂放完時呼叫
- (void) audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
    [_timer invalidate];
}

- (void)createPlayer
{
    NSString *str = [[NSBundle mainBundle] pathForResource:@"Music" ofType:@"mp3"];
    NSURL *_urlMusic = [NSURL fileURLWithPath:str];
    
    //建立音訊播放器物件2
    _player = [[AVAudioPlayer alloc] initWithContentsOfURL:_urlMusic error:nil];
    [_player prepareToPlay];//準備播放(轉碼解碼工作)
    _player.numberOfLoops = 1;//迴圈播放的次數(-1表示無限迴圈)
    _player.volume = 0.5;//設定音量大小
    
    //第一個時間間隔0.1秒呼叫一次
    _timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateTime) userInfo:nil repeats:YES];//定義一個定時器物件,用於跟新進度條
}


- (void)pressPlay
{
    NSLog(@"play");
    
    [_player play];
}

- (void)pressPause
{
    NSLog(@"pause");
    
    [_player pause];
}

- (void)pressStop
{
    NSLog(@"stop");
    
    [_player stop];
    _player.currentTime = 0;//當前播放時前清零
}

- (void)volumeChange:(UISlider *)slider
{
    NSLog(@"%f",slider.value);
    
    _player .volume = slider.value/100;
}

- (void)updateTime
{
    _musicProgress.progress = _player.currentTime/_player.duration;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end





//視訊播放器
//  ViewController.h
//  MPMoviePlayerViewConrroller
//
//  Created by mouweng on 17/8/27.
//  Copyright © 2017年 mouweng. All rights reserved.
//

#import <UIKit/UIKit.h>
//匯入蘋果的官方播放器標頭檔案(封裝了音訊視訊的播放類和其編碼解碼基礎類庫)
#import <MediaPlayer/MediaPlayer.h>

@interface ViewController : UIViewController
{
    //定義一個播放器物件
    MPMoviePlayerController *_playerController;
    
    //定義一個播放器檢視控制器
    MPMoviePlayerViewController *_playerView;
    
}

@end


//
//  ViewController.m
//  MPMoviePlayerViewConrroller
//
//  Created by mouweng on 17/8/27.
//  Copyright © 2017年 mouweng. All rights reserved.
//

#import "ViewController.h"


@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


- (void) touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    NSString *strURL = @"/Users/apple/Desktop/QQ20170826-185026.mp4";
    NSURL *url = [NSURL fileURLWithPath:strURL];
    
    
    
//    _playerController = [[MPMoviePlayerController alloc] initWithContentURL:url];
//    _playerController.view.frame = self.view.bounds;
//    [_playerController prepareToPlay];//視訊處理的編解碼的過程
//    [self.view addSubview:_playerController.view];
    
    
    //播放試圖控制器
    _playerView = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
    _playerView.view.frame = self.view.bounds;
    [self.view addSubview:_playerView.view];
}

@end