记录一下iOS视频播放器的开发过程

最近趁着空闲,动手写了一个视频播放器App,具有播放沙河目录视频文件、WiFi和FTP文件传输、播放网络视频文件并缓存本地、浏览网页等基本功能。下面着重介绍一下视频播放器的开发过程。

AVPlayer还是第三方库?

一开始兴高采烈的去用AVPlayer自定义了一个AVPlayerController,播放MP4文件,效果很好,直到点开wmv文件,竟然提示不支持,点开avi文件也是。AVPlayer支持格式参见here。喔,原来这么多格式不支持!由于AVPlayer的内部实现就像是一个黑盒,视频加载、解封装、解码、播放显示的过程对我们来说是透明的,因此果断放弃AVPlayer。于是开始寻找可用的第三方库。

MobilePlayer

基于AVPlayer开发,很多格式不支持,放弃。

IJKPlayer

IJKPlayer使用FFmpeg开发,支持多种视频格式,默认编译情况下不会支持多视频格式,需要编译前修改编译参数。自己从网上下载了一个IJKMediaFramework.framework,无法播放wmv文件。于是按照官方文档重新编译,一堆问题。首先是用Xcode10.1编译报armv7的错误,二是由于网络太差,执行./init-ios.sh的过程中下载FFmpeg的过程太慢了,一个小时竟然20%。自己也试着把FFmpeg下载下来放extra目录下,最终还是跳不过去。由于时间的问题,最终还是放弃了IJKPlayer,以后再试试吧。

MobileVLCKit

这个库默认就支持多种视频格式,支持pods安装,也可手动下载framework安装。MobileVLCKit功能非常强大,播放界面可以由自己完全定制。不过也发现一些坑,比如做进度条时,进度回调总是少1秒,后来在播放器状态变为.ended时又去更新一下进度才解决。当然这有可能是我对它的api还不够了解导致的,参考文档太少,官方demo又有问题。