iOS中VLC的集成与简单使用

VLC 是一款强大的全平台播放器, 几乎支持所有的音频�、视频格式文件播放, 官网地址:http://www.videolan.org/, 在iOS 中也可以集成 VLC 的 SDK 进行开发, 使用之前需要先去官网下载 SDK, 然后编译成 iOS 中使用的库文件才能使用, 这�种集成方法在编译的过程中需要 VPN 翻墙进行联网编译, 如果网速不好或者不稳定, 很容易编译出错, 如果网速好, 可以按照 wiki 的说明去编译: https://wiki.videolan.org/iOSCompile.
  还有一种简单的集成方式, 不用编译, 直接下载编译好的MobileVLCKit.framework就可以了. 下面开始一步一步做.

一.下载MobileVLCKit.framework

下载地址:http://nightlies.videolan.org/build/ios/.
打开页面之后, 拉到网页最下面可以看到最新的MobileVLCKit.framework, 不过最新的�在使用时会报错(以后更新后不知道还会不会报错, 如果更新了可以自己再尝试最新的), 可以下载4月16日的, 如下图:

下载`MobileVLCKit.framework`

下载完解压后, 里面的MobileVLCKit.framework就是我们要使用的 framework 了, 如下图:

解压后文件目录
二. iOS工程中集成MobileVLCKit.framework

新建工程, 将MobileVLCKit.framework导入工程并添加相关的依赖框架, 依赖框架有:

  • AudioToolbox.framework
  • VideoToolbox.framework
  • CoreMedia.framework
  • CoreVideo.framework
  • CoreAudio.framework
  • AVFoundation.framework
  • MediaPlayer.framework
  • libstdc++.6.0.9.tbd
  • libiconv.2.tbd
  • libc++.1.tbd
  • libz.1.tbd
  • libbz2.1.0.tbd

导入全部框架后, 如下图:

导入框架

导入后, 在ViewController.m中引人头文件: #import <MobileVLCKit/MobileVLCKit.h>, 如果没有报错, 说明集成成功.

三. 测试

ViewController.m中引人头文件进行测试, 主要代码如下:

UIView *videoView = [[UIView alloc] initWithFrame:CGRectMake(0, 50, self.view.bounds.size.width, 200)];
[self.view addSubview:videoView];
VLCMediaPlayer *player = [[VLCMediaPlayer alloc] initWithOptions:nil];
self.player = player;
self.player.drawable = videoView;
self.player.media = [VLCMedia mediaWithPath:[[NSBundle mainBundle] pathForResource:@"test" ofType:@"wmv"]];
[self.player play];

运行结果如下:

运行结果

如果要获取播放视频需要的总时间, 可以从VLCMedia类中的length属性获取, 如下:

NSInteger *AllTime = self.media.length.intValue;

如果要获取视频的当前播放进度, 需要给player设置delegate, 然后在代理方法中通过playertime属性获取当前进度, 获取当前播放进度的代理方法如下:

- (void)mediaPlayerTimeChanged:(NSNotification *)aNotification{
    //获取当前的播放进度
    NSInteger *currentProgress = self.player.time.intValue;
}

如果需要�控制播放进度(比如快进或回放), 可以�设置player类的position属性, position范围为0.0~1.0之间, 如下:

//设置播放进度, 0.0~1.0
[self.player setPosition:0.5];

如果需要获取视频的缩略图, 则需要用到VLCMediaThumbnailer类, 并设置代理进行监听获取, 如下:

//初始化并设置代理
VLCMediaThumbnailer *thumbnailer = [VLCMediaThumbnailer thumbnailerWithMedia:media andDelegate:self];
self.thumbnailer = thumbnailer;
//开始获取缩略图
[self.thumbnailer fetchThumbnail];

代理方法如下:

//获取缩略图超时
- (void)mediaThumbnailerDidTimeOut:(VLCMediaThumbnailer *)mediaThumbnailer{
    NSLog(@"getThumbnailer time out.");
}
//获取缩略图成功
- (void)mediaThumbnailer:(VLCMediaThumbnailer *)mediaThumbnailer didFinishThumbnail:(CGImageRef)thumbnail{
    //获取缩略图
    UIImage *image = [UIImage imageWithCGImage:thumbnail];
}

推荐阅读更多精彩内容

  • VLC的集成和使用 VLC介绍 VLC Media Player (VideoLAN) 为 Windows、Lin...
    Pocket阅读 14,969评论 87 61
  • 姓名:陈芬 公司:宁波慈星股份有限公司 宁波盛和塾《六项精进》224期学员,利他二组学员 【日精进打卡第39天】 ...
    龙芬浩阅读 35评论 0 0
  • 除了自己,没有人能救你! 所以,好好爱护自己,没什么比生命更重要,没什么比陪伴在家人身边更重要。。。
    青春的纪念阅读 46评论 0 1
  • 在每次准备资金入市之前,我都会打开板块问自己这么一个问题,如果给我一个成为某企业大股东的机会,我会选择哪个行业?哪...
    吴杼恩阅读 357评论 0 0
  • 今日笔记引题——互联网知识经济从去年开始兴起,一波又一波的热潮过去,付费内容、知识服务成为了我们现今关注的焦点,今...
    李东东5622阅读 208评论 0 3