MPMoviePlayerController自定义播放器并不是完美的:
- MPMoviePlayerController在iOS9被Apple废弃了;
- 当我们的需求需要深度定制播放器的时候,MPMoviePlayerController就显得力不从心了,比如笔者之前在做一个配音软件时,需要只播放视频的画面,而不需要视频的声音,同时还需要开启音频的录制,以及另开一个音频播放器播放背景音效。这个时候,MPMoviePlayerController哭了。
鉴于的局限性,新的框架应运而生--AVKit。
AVKit是建立在AVFoundation上,解决视频播放的高级对象。从AVFoundation Programming Guide中我们可以看到这样一张技术栈示意图:
如果有人记得AVFoundation刚出那年的WWDC的话,一定对AVFoundation的性能表现印象深刻,同时播放100部视频而丝毫不卡顿!在笔者的使用过程中也验证了这一点,无论是对于本地视频还是网络在线点播,AVFoundation表现都异常优异。
我们先来看看AVKit的结构:
由于本篇只是起一个“导购”的作用,而且关于AVKit的相关文章文档多如牛毛因此便不再介绍。下面推荐几个基于AVKit的第三方视频框架:
- VKVideoPlayer
- ALMoviePlayerController
- PBJVideoPlayer
后工业时代
然而,凡事总会有一个然而,AVKit也并非完美无瑕,当我们需要播放一些非常规格式的视频的时候(比如RMVB),AVKit又只能望洋兴叹了。
相信Mac用户都很熟悉一款VLC播放器,这款播放器在Mac上表现异常优异,支持的格式几乎涵盖了所有格式(就是这么屌!)。没错,就是它创造者--VideoLAN,开源了一款牛逼的视频播放框架MobileVLCKit!
我们先来看看它所支持的格式:
.rmvb .asf .avi .divx .dv .flv .gxf .m1v .m2v .m2ts .m4v .mkv .mov .mp2 .mp4 .mpeg .mpeg1 .mpeg2 .mpeg4 .mpg .mts .mxf .ogg .ogm .ps .ts .vob .wmv .a52 .aac .ac3 .dts .flac .m4a .m4p .mka .mod .mp1 .mp2 .mp3 *.ogg.
是不是很心动呢?那我们就开始吧!
1. 框架编译
在Show you code之前,我们总需要先有它的库吧?官方给出了详细的教程,英文不好速不好?没关系!这里有编译完成的VLC框架,下载下来就好啦!
MobileVLCKit静态库下载链接
2.项目编译
MobileVLCKit的静态库非常大,解压下来以后差不多有600+MB,但是编译之后只有几M而已,所以放心使用吧。
- Linked Frameworks and Libraries中添加下载完成的MobileVLCKit;
- 添加依赖框架,MobileVLCKit依赖于以下的框架:
- 修改编译选项,由于该框架底层由C++所编写,所以我们需要更改相关的编译选项;
- 修改Framework Search Paths,否则工程无法找到该框架;
PS: "std::ios_base::Init::~Init()", referenced from
出现这样的编译问题,是需要再加进libstdc++.dylib和libstdc++.6.dylib(为6.1使用,xcode5以后默认complier也可以编译通过)
OK!不错意外的话,CMD + B编译成功了!
为了抛砖引玉,献上我自己基于MobileVLCKit写的播放器:MRVLCPlayer,本来我只是想做一个Demo的,但是做着做着想做成一个框架,现在还有很多功能没有完善,但是作为一个Demo应该是够用了。
信息时代
当然啦,如果你懂得一些视频解码更专业的知识,你还可以使用ffmpeg和live555,这样可以更加底层的学习视频相关的技术。当然啦,博主现在也在学习这方面的知识,在此只是推荐给大家,顺便悄悄的说一句,其实MobileVLCKit也是基于ffmpeg二次开发的。