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