美文网首页iOS图形处理相关音视频iOS
iOS中VLC的集成与简单使用

iOS中VLC的集成与简单使用

作者: jianshu_wl | 来源:发表于2016-05-04 13:38 被阅读16273次

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];
}

相关文章

  • iOS中VLC的集成与简单使用

    VLC 是一款强大的全平台播放器, 几乎支持所有的音频�、视频格式文件播放, 官网地址:http://www.vi...

  • iOS 视频播放

    点击查看:http://www.jianshu.com/p/64de78eab7da iOS中VLC的集成与简单使...

  • 集成VLC For iOS 并简单使用

    一、为什么使用VLC For iOS 因为项目需求要播放rstp流媒体,但我们iOS只支持 mov/mo4/m4v...

  • VLC集成与使用

    VLC的集成和使用 VLC介绍 VLC Media Player (VideoLAN) 为 Windows、Lin...

  • iOS集成VLC避雷及简单使用

    最近需要播放器支持更多格式,首先想到了伟大的FFmpeg,多次导入tools失败后开始考虑VLC。查询了很多资料都...

  • Xcode编译报错:"_OBJC_CLASS_$_NS

    工程中需要使用VLC用于流媒体的播放,然后同事就编译了一个iOS版VLC的工程.我在编译后的VLC工程中导入要使用...

  • VLC 框架的使用及问题

    集成MobileVLCKit 框架,简单的说。 使用 VLC 获取视频第一帧图片,其实这个在下载库里的 demo ...

  • 无标题文章

    iOS 缓存 快速集成环信 技术文档 Masonry简单使用 MJExtension简单使用 GCD基本使用 gi...

  • iOS 使用 VLC

    简介 #### 准备 1. 从 VLC 下载需要用到的文件:VLC for iOS �x.x.x source c...

  • VLC源码分析-0:编译源码环境配置

    本文档描述从VLC media player for iOS下载的源码包VLC for iOS 2.7.8 sou...

网友评论

  • 孤单的道行天尊:楼主.有 demo 可看么..或者..那个下载 frameWork 的地址已经打不开了.
    半岛夏天:http://nightlies.videolan.org/build/iOS/
  • 咖啡bu加糖:楼书 VLCMediaListPlayer 可以回去缓存进度么
  • 小饼干女孩:VLCMediaPlayerState的VLCMediaPlayerStateStopped和VLCMediaPlayerStateEnded有什么不同之处
  • Bana:请问下楼主,vlc播放视频有黑边怎么解决
  • Bana:MobileVLCKit.framework 和 ffmpeg的库貌似冲突啊,我加入 MobileVLCKit.framework后,av_guess_format 就返回NULL 的,请问下怎么解决
  • 豆哥笔记:只有声音 没有画面 楼主知道怎么解决吗
    这小歌不错:是本地视频嘛?换一个视频源试试,我用的本地avi,换一个视频就好了。
  • 纠结的哈士奇:抛一个小问题,如果有小伙伴正好知道,希望可以答复下
    Q:
    播放本地视频时,用这个怎么拿取封面图,现在只知道在播放中,可以拿到,那我想在显示的时候,就拿到封面,该如何做呢?
  • e8f45d421f4b:这个貌似会跟cocoapod冲突。。。。。
  • 湫夜錵慲觞:我想问一下,怎么关闭打开链接的失败的弹窗呢?
  • 75281188d37c:作者你好,,请问怎么改变绘制的画面的宽高比例呢
  • 47e2b53b72da:请问怎么查看player是否在播放呢,isPlaying这个属性总是返回fales
  • zeus2:楼主 我播放后 提示 报错。
    http://upload-images.jianshu.io/upload_images/2791500-c8c863e7306dfb4b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240

    看到demo 有AudioUnit.framework但是加上后 编译又报错通不过,楼主 能否交流下这个怎么办?
  • 大Z哥:楼主,获取用iPhone拍摄的视频 的略缩图时,会崩溃,遇到过吗?
  • jemmy:有没有播放完成的回调?
    大Z哥:可以给VLCMediaPlayer价格kvo,各种状态随便监听
  • 星彬:楼主 为什么获取视频时长,显示的是0,length是nil。
  • taobingzhi:楼主 为什么 MP4格式的视频,播放获取不到视频时长,length是nil。
    星彬:好像要到时间改变的回调方法中获取总时长才能获取的到,可能是我们获取的时候视频还没加载完成吧.你开个定时器几秒后获取就能获取到了。
  • 演繹陌路人生:打印出这样的core generic error 怎么处理
    2017-05-12 16:20:42.285 XPlayer[54345:5967721] creating player instance using shared library
    [00007faf0d60a298] core generic error: option marq-color does not exist
    [00007faf0d60a298] core generic error: option marq-opacity does not exist
    [00007faf0d60a298] core generic error: option marq-position does not exist
    [00007faf0d60a298] core generic error: option marq-refresh does not exist
    [00007faf0d60a298] core generic error: option marq-size does not exist
    [00007faf0d60a298] core generic error: option marq-timeout does not exist
    [00007faf0d60a298] core generic error: option marq-x does not exist
    [00007faf0d60a298] core generic error: option marq-y does not exist
    L_Glenn:楼主解决了吗?好像这东西不知道tcp直播流。
  • 睡后3k:可以开源一下demo吗
  • maTianHong:你好,我根据上边的引导,导入MobileVLCKit.framework,编译的时候报错了,ld: framework not found MobileVLCKit,我查看了路径什么的,都没问题啊! 请问你做的时候碰到这样的问题了吗
  • kkkore:请问,如何获取缓存的,你有找到对应的方法吗?
  • 守望森林:你好,我这边按上述步骤创建播放器,崩溃了,是什么原因啊?
  • wycandyy:问一下 VLC中如何设置硬解
  • 杰克道长:这家伙对网络视频支持不是很好吗? 播放网络视频时,画面很卡。
    星彬:@bingzhi 好像要到时间改变的回调方法中获取总时长才能获取的到,可能是我们获取的时候视频还没加载完成吧.你开个定时器几秒后获取就能获取到了。
    taobingzhi:楼主 为什么mp4格式的视频,播放获取不到视频时长,length是nil?楼主 知道吗?
    MNode: @杰克道长 是你网络不好吧
  • 爱上程序元:为什么打开地址找不到20160416的谁有
  • 53f73ad500ce:还有一个坑, 去官网下的2.2.2以后的版本用这种方法编译会报错,我暂时退而求其次了.希望后面有人解决了新版本兼容之后分享一下
  • 五蕴盛:楼主 有些地方我遇到了,可能你没遇到,不过可以写一下给后来的人看一看,因为库中用到了C++,要将这个 AppDelegate.m 改成 AppDelegate.mm,还有bitcode 改成NO,c++ standar library选项改为libstdc++(GNUc++standard library)。希望可以少走弯路。共勉
    五蕴盛:https://www.jianshu.com/p/e0cb654370ee简易流程
    五蕴盛:@红狼k 共勉
    红狼k:非常感谢,困扰我一天的问题,居然用这种方式给解决了
  • helinyu:麻烦传一个这个demo的代码?那个self.player 在哪里定义了这个Player?
    五蕴盛:@谷寒 在你需要视频直播的地方先导入 #import <MobileVLCKit/MobileVLCKit.h>
    然后设置一个属性就行了
    @property (nonatomic,strong)VLCMediaPlayer *player
  • 27bba2520ac9:我再用VLC播放AVI格式的文件时,只要有手动改变播放进度,就会没有声音耶,
  • 27bba2520ac9:大哥,下载页面404了,还有其他的下载地址吗??
  • 30846ecea371:可以用cocoapods下载MobileVLCKit.framework,更方便,目前2.2.2版本
    红狼k:用cocoapods报错。。。。
    30846ecea371:@wuyangLi 我还可以找到啊,搜“MobileVLCKit”,不加后面的
    wuyangLi:@pinkfloyda cocoa pod里面没找到,是不是没有了
  • 暴走的码农:hi 这个地址 http://nightlies.videolan.org/build/ios/ 不能访问了,有没有其他地方可以下载 :relaxed:
    码畜中的渣渣:404啊,不能下载了
    HEYRIX:不过 这货的framework有800M,实在有点大啊。很多git不让上传这么大的单个文件。
    HEYRIX:@暴走的码农 可以下载的。你再试试。
  • 萧城x:这个如何拉流
  • 吃你煮的鱼:这个可以做直播的吧?不知道跟ffmpeg有什么不同吗
  • Medivh:mark
  • Lonely__M:学习了,6666

本文标题:iOS中VLC的集成与简单使用

本文链接:https://www.haomeiwen.com/subject/dwurrttx.html