IOS-视频

一、简介

iOS提供了MPMoviePlayerController、MPMoviePlayerViewController两个类,可以用来轻松播放视频和网络流媒体\网络音频
提示:网络音频同样使用此控制器播放
YouTobe就是用MPMoviePlayerController实现的
MPMoviePlayerViewController只能全屏播放视频
上述两个类都定义在了MediaPlayer框架中
 
二、MPMoviePlayerController支持的格式
MPMoviePlayerController
继承自NSObject
内部有个view可以展示视频内容
将该视图添加其他控制器的view上,即可显示视频内容
MPMoviePlayerController可以播放的视频格式包括:
H.264、MPEG-4等
支持的文件扩展名包括:avi,mkv,mov,m4v,mp4等
 
可以从苹果官网:http://support.apple.com/kb/HT1425下载一些用来测试的视频文件,文件都比较小
 
提示:MPMoviePlayerController并不支持所有的视频格式,如果要播放不支持的视频格式,需要借助第三方框架进行解码,如VLC
 
三、MPMoviePlayerController的使用
加载视频资源(注意,如果url为nil同样可以加载)

NSAssert(self.url, @"URL不能为空");

[[MPMoviePlayerController alloc] initWithContentURL:self.url];

显示

[self.view addSubview:self.moviePlayer.view];

通过设置AutoresizingMask属性可以在横竖屏转换时自动调整视图大小

播放

[self.moviePlayer play];

全屏

[self.moviePlayer setFullscreen:YES animated:YES];

 
MPMoviePlayerController的播放状态是通过通知中心监听的
 
四、常用监听通知事件
状态变化

MPMoviePlayerPlaybackStateDidChangeNotification

播放结束

MPMoviePlayerPlaybackDidFinishNotification

退出全屏

MPMoviePlayerDidExitFullscreenNotification

截屏完成

MPMoviePlayerThumbnailImageRequestDidFinishNotification 

截屏方法

-requestThumbnailImagesAtTimes:timeOption:

 

五、VLC(基于FFmpeg)

注意点
存放VLC的文件夹名不要有空格
一旦执行过编译脚本sh, 就别再修改存放VLC的文件夹名

1.集成

静态库 + 头文件
 
依赖库
 
C++标准库
 
导入头文件, 播放视频

#import "VLCMediaPlayer.h"

 

self.vlcPlayer = [[VLCMediaPlayer alloc] init];

self.vlcPlayer.drawable = self.view;

self.vlcPlayer.media = [VLCMedia mediaWithURL:[NSURL URLWithString:@"http://streams.videolan.org/streams/mp4/Mr_MrsSmith-h264_aac.mp4"]];

[self.vlcPlayer play];

 
1.VLCMediaPlayer – 常见方法
播放控制

- (BOOL)play;

- (void)pause;

- (void)stop;

- (BOOL)isPlaying;

@property float rate; // 播放速率

 

播放进度

- (void)setTime:(VLCTime *)value; // 当前的播放时间

- (VLCTime *)time;

@property (readonly) VLCTime *remainingTime; // 剩余的播放时间

- (void)setPosition:(float)newPosition; // 播放进度(0.0 ~ 1.0)

- (float)position;

 
播放的内容

- (void)setMedia:(VLCMedia *)value;

- (VLCMedia *)media;

 

播放的载体(显示到哪里, 一般是一个UIView)

@property (retain) id drawable;

 

2.VLCMediaPlayer – 播放器的状态

播放器的状态
- (VLCMediaPlayerState)state;

enum {

    VLCMediaPlayerStateStopped,        // 播放器已经停止

    VLCMediaPlayerStateOpening,        // 流正在打开

    VLCMediaPlayerStateBuffering,      // 流正在缓冲

    VLCMediaPlayerStateEnded,          // 流已经结束

    VLCMediaPlayerStateError,          // 播放器产生了错误

    VLCMediaPlayerStatePlaying,        //  流正在播放

    VLCMediaPlayerStatePaused          // 流被暂停了

};

3.VLCMediaPlayerDelegate

通过代理对象可以监听播放器的状态
当播放器的状态改变就调用

- (void)mediaPlayerStateChanged:(NSNotification *)aNotification;

 
当播放器的时间改变就调用

- (void)mediaPlayerTimeChanged:(NSNotification *)aNotification;

 

 1 //
 2 //  ViewController.m
 3 //  IOS_0322_视频
 4 //
 5 //  Created by ma c on 16/3/22.
 6 //  Copyright © 2016年 博文科技. All rights reserved.
 7 //
 8 
 9 #import "ViewController.h"
10 #import <MediaPlayer/MediaPlayer.h>
11 #import <MobileVLCKit/MobileVLCKit.h>
12 
13 @interface ViewController ()
14 
15 @property (nonatomic, strong) VLCMediaPlayer *player;
16 
17 @end
18 
19 @implementation ViewController
20 
21 - (void)viewDidLoad {
22     [super viewDidLoad];
23     self.view.backgroundColor = [UIColor cyanColor];
24 
25 }
26 
27 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
28 {
29 //    [self systemMoviePlayer];
30     [self mobileVLCMoviePlayer];
31     
32 }
33 
34 - (void)mobileVLCMoviePlayer
35 {
36     NSURL *url = [[NSBundle mainBundle] URLForResource:@"11-传感器.mp4" withExtension:nil];
37     self.player = [[VLCMediaPlayer alloc] init];
38     self.player.media = [VLCMedia mediaWithURL:url];
39     
40     //设置播放界面的载体
41     self.player.drawable = self.view;
42     //播放
43     [self.player play];
44 
45 }
46 
47 - (void)systemMoviePlayer
48 {
49     MPMoviePlayerController *mpc = [[MPMoviePlayerController alloc] init];
50     mpc.contentURL = [[NSBundle mainBundle] URLForResource:@"11-传感器.mp4" withExtension:nil];
51     
52     //缓冲之后自动播放
53 //    [mpc prepareToPlay];
54     
55     //隐藏自带的控制面板
56 //    mpc.controlStyle = MPMovieControlStyleNone;
57     
58     //添加播放器的界面到控制器View上面
59     mpc.view.frame = CGRectMake(7, 50, 400, 300);
60     [self.view addSubview:mpc.view];
61     
62     //播放
63     [mpc play];
64 
65 }
66 
67 @end

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值