iOS 使用 FFmpeg

作者: 牵线小丑 | 来源:发表于2016-03-17 21:19 被阅读5908次

配置支持 h264 编解码

  1. 下载 h264 源码和对应的编译脚本
  2. 将解压后的 h264 源码文件夹改名成 x264 放到解压后的编译脚本 x264-ios-master 文件夹中(编译脚本内设置的源码文件夹名为 x264);
  3. 编译脚本内执行 ./build-x264.sh 命令;

集成

  1. 下载FFmpeg For iOS编译脚本;
  2. 打开 terminal 执行sh build-ffmpeg.sh
  3. 步骤2执行完成后运行sh build-ffmpeg.sh lipo.a文件合并成一个;
  4. 步骤3执行完成将FFmpeg-iOS文件夹拖到目标工程并添加libz.dyliblibbz2.dyliblibiconv.dylib三个库,xcode7 及以上则是添加libz.tbdlibbz2.tbdlibiconv.tbd,并添加框架VideoToolbox.framework(此框架是 iOS8 新增的,用于硬解码)

  5. 设置头文件路径$(PROJECT_DIR)/$(PRODUCT_NAME)/FFmpeg-iOS/include
  6. OC 工程在调用的时候直接#include "avformat.h"
  7. swift 工程创建桥接头文件,在头文件内添加#import "avformat.h"

使用

通过以上我们得到一个集成了FFmpeg的工程,接下来进行测试。为了方便,我们使用github上一个基于FFmpeg的框架 kxmovie

kxmovie编译
  1. 终端运行:git clone https://github.com/kolyvan/kxmovie
  2. cd kxmovie
  3. git submodule update --init
  4. rake
  5. kxmovie目录下的kxmovie文件夹拖到工程中

  6. 在桥接文件里添加要使用到的目标文件,如#include "KxMovieViewController.h"
代码

vitamio 这里有一些视频链接供测试用。

  1. 按下按钮弹出视频窗口
@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);
    }
题外话

有些人应该听过或用过Libav,从网上搜索到的资料:
    原来FFmpeg的一群开发者不满FFmpeg的项目管理方式,所以fork了新的一个项目,叫LibavFFmpeg更侧重底层的效率。(由于开发者大多是设备厂家的人希望自己的设备尽快的run起来,于是更偏向底层些),Libav更侧重软件构架。(也是此原因分裂的,不满对软件框架的混乱,为了更好的代码结构,分裂出来)

相关文章

网友评论

  • 沃小沃:请问怎么在oc中调用ffmpeg命令行
  • StevenJ:补充下

    最新版本,按照楼主的方式,编译会报错

    Implicit declaration of function 'avpicture_deinterlace' is invalid in C99

    这个错误的解决方法是,把if (!_disableDeinterlacing && _videoFrame->interlaced_frame) 这段都注释掉

    解决方法出处:https://github.com/kolyvan/kxmovie/issues/125

    谢谢楼主分享
  • LoveCode:非常感谢博主!困扰了两天问题解决了!
  • puppySweet:Ffmpeg怎么设置 如下的格式 视频参数:MP4(H264) 600x600 500kb/s 25fps
    音频参数: aac 44100HZ 24kb/s
    并且也要压缩 视频后上传 求指导 搞了一个星期疯了
    牵线小丑:@puppySweet 我也只是刚刚接触而已,所以还无法回答
  • LV大树:谢谢。马克。
  • VincentPeng:你好我集成之后出现好多错误,显示没有这个类是因为什么?
    VincentPeng:@牵线小丑 集成好了,最后是复制你的文件做的,我自己做的合成之后,文件夹里面的文件数量和你的不一样
    牵线小丑:@shixinPeng 没有哪个类?能把错误贴一下么?

本文标题:iOS 使用 FFmpeg

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