iOS-音頻和視頻

1、視頻

  1. 視頻播放器須要添加MediaPlayer.framework.
  2. 視頻播放主要提供了兩個類,一個MPMoviePlayerController, 另外一個是MPMoviePlayerViewController.
  3. 視頻資源能夠從本地得到,也能夠從服務器得到。

MPMoviePlayerController播放本地視頻資源(本地資源URL出現漢字不能編碼)服務器

NSString *path = [[NSBundle mainBundle]pathForResource:@"root" ofType:@"mp4"];
NSURL *url = [NSURL fileURLWithPath:path];
_playcontroller = [[MPMoviePlayerController alloc]initWithContentURL:url];
_playcontroller.view.frame = CGRectMake(0, 100, 320, 300);
[_playcontroller play];
[self.view addSubview:_playcontroller.view];

 MPMoviePlayerController播放網絡資源(服務器爲本身搭建,地址不可以使用,鏈接服務器的URL,出現漢字須要編碼)網絡

str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]//編碼方法框架

NSURL *url = [NSURL URLWithString:@"http://localhost:8080/media/root.mp4"];
_playcontroller.view.frame = CGRectMake(0, 100, 320, 300);
[_playcontroller play]; [self.view addSubview:_playcontroller.view];

 能夠加一個通知,在視頻播放完畢的時候發出通知,將視圖從界面上移除。ide

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(removeMedia) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
}
-(void)removeMedia
{
    [_playcontroller.view removeFromSuperview];
}

 MPMoviePlayerViewController播放視頻資源編碼

NSURL *url = [NSURL URLWithString:@"http://localhost:8080/media/root.mp4"];
MPMoviePlayerViewController *player = [[MPMoviePlayerViewController alloc]initWithContentURL:url];
[self presentViewController:player animated:YES completion:nil];

 效果圖:url

MPMoviePlayerViewController如何讓視頻橫屏播放。spa

橫屏播放,須要繼承MPMoviePlayerViewController這個類。假設myMPMoviePlayerViewController繼承這個類。orm

咱們須要在myMPMoviePlayerViewController中實現兩個方法。視頻

-(BOOL)shouldAutorotate
{
    return YES;
}
-(NSUInteger)supportedInterfaceOrientations
{
    return  UIInterfaceOrientationMaskLandscape;
}

 而後在實現下面代碼:server

NSURL *url = [NSURL URLWithString:@"http://localhost:8080/media/root.mp4"];
myMPMoviePlayerViewController *player = [[myMPMoviePlayerViewController alloc]initWithContentURL:url];
[self presentViewController:player animated:YES completion:nil];

 效果圖爲:

2、音頻

音頻的話,咱們須要框架AVFoundation.framework

音頻的話,通常須要使用進度條顯示音頻播放的進度。

@interface ViewController : UIViewController
{
    //音頻播放器
    AVAudioPlayer * _audioPalyer;
    IBOutlet UISlider *_slider;
    float currentProgress;
    NSTimer *_timer;
}
- (IBAction)playButton:(id)sender;
- (IBAction)stopButton:(id)sender;

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

- (IBAction)playButton:(id)sender
{
   _timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(moveSlide) userInfo:nil repeats:YES];
    
    NSString *path = [[NSBundle mainBundle]pathForResource:@"1" ofType:@"mp3"];
    NSData *data = [NSData dataWithContentsOfFile:path];
    _audioPalyer = [[AVAudioPlayer alloc]initWithData:data error:nil];
    [_audioPalyer play];
    
    _slider.maximumValue = _audioPalyer.duration;
    [_slider addTarget:self action:@selector(changeSlide) forControlEvents:UIControlEventValueChanged];
}

-(void)changeSlide
{
    _audioPalyer.currentTime = _slider.value;
}

-(void)moveSlide
{
    _slider.value = _audioPalyer.currentTime;
}

- (IBAction)stopButton:(id)sender
{
    UIButton *button = (UIButton *)sender;
   
    if (button.tag == 0)
    {
        [_audioPalyer pause];
        [button setTitle:@"繼續播放" forState:UIControlStateNormal];
        button.tag = 1;
        [_timer invalidate];
        _timer = nil;
    }
    else
    {
        [_audioPalyer play];
        [button setTitle:@"暫停" forState:UIControlStateNormal];
        button.tag = 0;
        [_slider addTarget:self action:@selector(changeSlide) forControlEvents:UIControlEventValueChanged];
    }
}

 效果圖:

相關文章
相關標籤/搜索