IOS 實現音訊視訊播放器功能
阿新 • • 發佈:2019-02-05
//音訊播放器 // 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