- MPMoviePlayerController及MPMoviePlayerViewController并不支持所有的視頻格式聋亡,如果要播放不支持的視頻格式,需要借助第三方框架進(jìn)行解碼,如VLC
下載地址:https://github.com/videolan/vlc - 導(dǎo)入靜態(tài)庫(kù)路召、依賴庫(kù)等所依賴的資源
- 新建.mm文件
靜態(tài)庫(kù)中采用ObjectC++實(shí)現(xiàn)潭袱,因此需要您保證您工程中至少有一個(gè).mm后綴的源文件(您可以將任意一個(gè).m后綴的文件改名為.mm) - 導(dǎo)入頭文件,播放視頻
#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; // 播放速率
// 播放進(jìn)度
- (void)setTime:(VLCTime *)value; // 當(dāng)前的播放時(shí)間
- (VLCTime *)time;
@property (readonly) VLCTime *remainingTime; // 剩余的播放時(shí)間
- (void)setPosition:(float)newPosition; // 播放進(jìn)度(0.0 ~ 1.0)
- (float)position;
// 播放的內(nèi)容
- (void)setMedia:(VLCMedia *)value;
- (VLCMedia *)media;
// 播放的載體(顯示到哪里, 一般是一個(gè)UIView)
@property (retain) id drawable;
// 播放器的狀態(tài)
- (VLCMediaPlayerState)state;
enum {
VLCMediaPlayerStateStopped, // 播放器已經(jīng)停止
VLCMediaPlayerStateOpening, // 流正在打開
VLCMediaPlayerStateBuffering, // 流正在緩沖
VLCMediaPlayerStateEnded, // 流已經(jīng)結(jié)束
VLCMediaPlayerStateError, // 播放器產(chǎn)生了錯(cuò)誤
VLCMediaPlayerStatePlaying, // 流正在播放
VLCMediaPlayerStatePaused // 流被暫停了
};
6.通過代理對(duì)象可以監(jiān)聽播放器的狀態(tài)
// 當(dāng)播放器的狀態(tài)改變就調(diào)用
- (void)mediaPlayerStateChanged:(NSNotification *)aNotification;
// 當(dāng)播放器的時(shí)間改變就調(diào)用
- (void)mediaPlayerTimeChanged:(NSNotification *)aNotification;