VLC

  1. MPMoviePlayerController及MPMoviePlayerViewController并不支持所有的视频格式,如果要播放不支持的视频格式,需要借助第三方框架进行解码,如VLC
    下载地址:https://github.com/videolan/vlc
  2. 导入静态库、依赖库等所依赖的资源
  3. 新建.mm文件
    静态库中采用ObjectC++实现,因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm)
  4. 导入头文件,播放视频
#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];

5.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;

// 播放器的状态
- (VLCMediaPlayerState)state;
enum {
    VLCMediaPlayerStateStopped,          // 播放器已经停止
    VLCMediaPlayerStateOpening,         // 流正在打开
    VLCMediaPlayerStateBuffering,      // 流正在缓冲
    VLCMediaPlayerStateEnded,         // 流已经结束
    VLCMediaPlayerStateError,        // 播放器产生了错误
    VLCMediaPlayerStatePlaying,     //  流正在播放
    VLCMediaPlayerStatePaused      // 流被暂停了
};

6.通过代理对象可以监听播放器的状态

// 当播放器的状态改变就调用
- (void)mediaPlayerStateChanged:(NSNotification *)aNotification;

// 当播放器的时间改变就调用
- (void)mediaPlayerTimeChanged:(NSNotification *)aNotification;

你可能感兴趣的:(VLC)