iOS 使用 FFmpeg
iOS 使用 FFmpeg
集成
- 下载FFmpeg For iOS编译脚本;
- 打开 terminal 执行
sh build-ffmpeg.sh
; - 步骤2执行完成后运行
sh build-ffmpeg.sh lipo
将.a
文件合并成一个; - 步骤3执行完成将
FFmpeg-iOS
文件夹拖到目标工程并添加libz.dylib
、libbz2.dylib
、libiconv.dylib
三个库,xcode7 及以上则是添加libz.tbd
、libbz2.tbd
、libiconv.tbd
,并添加框架VideoToolbox.framework
(此框架是 iOS8 新增的,用于硬解码)
- 设置头文件路径
$(PROJECT_DIR)/$(PRODUCT_NAME)/FFmpeg-iOS/include
:
- OC 工程在调用的时候直接
#include "avformat.h"
; - swift 工程创建桥接头文件,在头文件内添加
#include "avformat.h"
使用
通过以上我们得到一个集成了FFmpeg
的工程,接下来进行测试。为了方便,我们使用github
上一个基于FFmpeg
的框架 kxmovie。
kxmovie编译
- 终端运行:
git clone https://github.com/kolyvan/kxmovie
cd kxmovie
git submodule update --init
rake
- 将
kxmovie
目录下的kxmovie
文件夹拖到工程中
- 在桥接文件里添加要使用到的目标文件,如
#include "KxMovieViewController.h"
代码
vitamio 这里有一些视频链接供测试用。
-
按下按钮弹出视频窗口
@IBAction func playVedio(sender: AnyObject) { let paths = ["http://live.3gv.ifeng.com/zixun.m3u8", "http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8"] guard let vedioVc = KxMovieViewController.movieViewControllerWithContentPath(paths[1], parameters: nil) as? UIViewController else { print("err") return; } self.presentViewController(vedioVc, animated: true, completion: nil); }
转至:http://www.jianshu.com/p/b72ae2446747
题外话
有些人应该听过或用过Libav,从网上搜索到的资料:
原来FFmpeg
的一群开发者不满FFmpeg
的项目管理方式,所以fork了新的一个项目,叫Libav
。FFmpeg
更侧重底层的效率。(由于开发者大多是设备厂家的人希望自己的设备尽快的run起来,于是更偏向底层些),Libav
更侧重软件构架。(也是此原因分裂的,不满对软件框架的混乱,为了更好的代码结构,分裂出来)
浩/grand(博客作者)
著作权归作者所有,转载请联系作者获得授权,并标注“博客作者”。
著作权归作者所有,转载请联系作者获得授权,并标注“博客作者”。