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(博客作者)
著作权归作者所有,转载请联系作者获得授权,并标注“博客作者”。
著作权归作者所有,转载请联系作者获得授权,并标注“博客作者”。

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号