>

FFmpeg框架在iOS平台上的编译和使用,在iOS平台上

- 编辑:澳门新葡亰平台游戏 -

FFmpeg框架在iOS平台上的编译和使用,在iOS平台上

1.gas-preprocessor

最近有同学来询问FFmpeg框架的使用方法以下过程中如有问题,请简信我.

FFmpeg框架在iOS平台上的编译和使用

2.shell script FFmpeg-iOS-build-script或者shell script

使用环境

  • Mac OS Yosemite 10.10.5

1.使用环境

注意:2中第一个脚本是3.0的编译,第二个是2.8的编译。但其实这都是可以改的。比如下面的例子我们编译ffmpeg3.0,但是我们用第二个脚本,打开后将其中的2.8改为3.0即可,当然编译其它版本也可以。下面是ffmpeg各个版本的发布链接。

开发工具

  • Xcode 7.0

  • Terminal

macOS Sierra 10.12.3 

1.下载完第一个gas-preprocessor后,将其中的脚本文件 gas-preprocessor.pl拷贝到/usr/sbin/目录下面。 如果不能拷贝到该目录下,那么就拷贝到/usr/local/bin下面。到该目录下给该文件增加权限 chmod u+x gas-preprocessor.pl

需要的文件链接

  • gas-preprocessor
  • yasm
  • FFmpeg-iOS-build-script
  • ffmpeg-2.8
  • kxmovie

2.开发工具

2.下载安装yasm 终端输入 brew install yasm 安装即可。如果提示命令无效,那应该是你没有brew.去官网赋值上面的命令即可安装下载。下载完成后,运行brew install yasm即可。

编译适用于iOS平台的FFmpeg静态库

  • 打开终端Terminal进入下载后的gas-preprocessor文件夹

    • 将文件夹内的gas-preprocessor.pl文件拷贝到/usr/sbin/目录下

    • 修改/usr/sbin/gas-preprocessor.pl的文件权限为可执行权限

      chmod 777 /usr/sbin/gas-preprocessor.pl
      
  • 执行FFmpeg-iOS-build-script-master文件夹内的build-ffmpeg.sh

    • 编译所有的版本arm64armv7x86_64的静态库
    ./build-ffmpeg.sh
    
    • 编译支持arm64架构的静态库
    ./build-ffmpeg.sh arm64
    
    • 编译适用于armv7x86_64(64-bit simulator)的静态库
    ./build-ffmpeg.sh armv7 x86_64
    
    • 编译合并的版本
    ./build-ffmpeg.sh lipo
    

Xcode 8.2.1

3.下载FFmpeg-iOSibuild-script文件,我们下载第二个2.8的,修改脚本中的2.8改为3.0然后在该路径下 进行编译。./build-ffmpeg.sh编译所有版本的静态库。支持xcode的模拟器和真机操作。一般都这样编译./build-ffmpeg.sh armv7 arm64 编译支持arm64架构的静态库。./build-ffmpeg.sh x86_64 编译支持64-bit模拟器的静态库。./build-ffmpeg.sh lipo 编译合并的版本。

编译静态库遇到的问题

  • yasm没有安装的情况

    • 解决方案1

      • 进入下载后的yasm文件夹,通过编译安装命令yasm

        ./configure && make -j 4 && sudo make install
        
    • 解决方案2

      • 使用Homebrew包管理器,进行安装

        brew install yasm
        
    • 测试是否安装成功

      yasm --verision
      
  • c test failed的情况

    • xcode环境安装过多,使用xcode-select选择默认的工具路径/Applications/Xcode-beta.app

      sudo xcode-select -s /Applications/Xcode-beta.app
      

Terminal(终端)

这样就可以编译完成了。

使用编译完成的FFmpeg静态库

  • 编译成功后,即可将FFmpeg-iOS文件夹(包含include和lib)引入到Xcode内

  • 加入依赖库libz.lib

  • 加入依赖库libbz2.lib

  • 加入依赖库libiconv.lib

  • 如有编译错误,链接文件不存在

    修改Build Setting Header Search Paths = $/LOFFmpegSample/FFmpeg-iOS/include
    

3.需要下载相关的文件链接

因此我们完全可以编译出ffmpeg已经发布的任何版本,任一种架构在iOS平台上。

使用框架kxmovie播放视频

 NSString *path = @""; NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; // increase buffering for .wmv, it solves problem with delaying audio frames if ([path.pathExtension isEqualToString:@"wmv"]) parameters[KxMovieParameterMinBufferedDuration] = @; // disable deinterlacing for iPhone, because it's complex operation can cause stuttering if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) parameters[KxMovieParameterDisableDeinterlacing] = @; KxMovieViewController *vc = [KxMovieViewController movieViewControllerWithContentPath:path parameters:parameters]; [self presentViewController:vc animated:YES completion:nil];

实例工程:LOFFmpeg

gas-preprocessor

参考链接

yasm

链接1

FFmpeg-iOS-build-script

链接2

ffmpeg-2.8

kxmovie

图片 1

所要下载的文件

只需要下载上图中的4个,ffmpeg-2.8不用直接下载,因为当编译脚本的时候发现mac没有ffmpeg-2.8时会在终端里帮助我们下载ffmpeg-2.8

1.下载完成后打开终端 进入gas-preprocessor文件夹

cd 将文件拖进来回车

2.将文件夹内的gas-preprocessor.pl文件拷贝到/usr/sbin/目录下

sudo cp /Users/chenqiang/Downloads/gas-preprocessor-master/gas-preprocessor.pl /usr/local/bin

注意上面的sudo cp(这个地方是gas-preprocessor文件下gas-preprocessor.pl的地址,只需要将gas-preprocessor.pl文件拖进来就行了) /usr/local/bin 回车

3.修改/usr/sbin/gas-preprocessor.pl的文件权限为可执行权限

如果1.命令如果不行就使用2.命令(我当时用的是2.命令)

1.

chmod 777 /usr/sbin/gas-preprocessor.pl

2.

chmod +x gas-preprocessor.pl

图片 2

gas-preprocessor文件夹的操作

4.此时为了编译时有问题我们现在进入下载后的yasm文件夹,通过编译安装命令yasm

cd 将文件拖进来回车

./configure && make -j 4 && sudo make install

如果上一步不行使用Homebrew包管理器,进行安装(我是用Homebrew包管理器,进行安装的)

首先检查Homebrew包管理器是否安装

终端命令输入 brew

如果没有安装 Homebrew包管理器

ruby -e "$(curl -fsSL )"

执行完之后输入下面的命令安装yasm

brew install yasm

测试是否安装成功

yasm --version

图片 3

brew

图片 4

ruby-e-1

图片 5

ruby-e

图片 6

检测是否安装成功用版本查看

上方的Failed during:/usr/local/bin/brew update --force说明是fatal: unable to access '': SSLRead() return error -9806

Error: Fetching /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core failed!

Updated 1 tap (homebrew/core).原因是网络不稳定不能访问github,还有就是之前我已经安装过了Homebrew,多试几次ruby -e "$(curl -fsSL )"

接下来

执行FFmpeg-iOS-build-script-master文件夹内的build-ffmpeg.sh

cd 将文件FFmpeg-iOS-build-script-master拖进来回车

编译所有的版本arm64、armv7、x86_64的静态库

./build-ffmpeg.sh

如果编译支持arm64架构的静态库

./build-ffmpeg.sh arm64

如果编译适用于armv7和x86_64(64-bit simulator)的静态库

./build-ffmpeg.sh armv7 x86_64

或者编译合并的版本

./build-ffmpeg.sh lips

接下来就是等终端自己编译不用再管,大概要十几分钟

图片 7

若是遇到上面的问题就重复上 面的第一个步骤的gas-preprocessor过程

参考如下

1. 下载最新的gas-preprocessor.pl,地址是https://github.com/applexiaohao/FFmpeg-iOS-build-script

1.下载完成后打开终端 进入gas-preprocessor文件夹

cd 将文件拖进来回车

2.将文件夹内的gas-preprocessor.pl文件拷贝到/usr/sbin/目录下

sudo cp /Users/chenqiang/Downloads/gas-preprocessor-master/gas-preprocessor.pl /usr/local/bin

注意上面的sudo cp(这个地方是gas-preprocessor文件下gas-preprocessor.pl的地址,只需要将gas-preprocessor.pl文件拖进来就行了) /usr/local/bin 回车

3.修改/usr/sbin/gas-preprocessor.pl的文件权限为可执行权限

如果1.命令如果不行就使用2.命令(我当时用的是2.命令)

1.

chmod 777 /usr/sbin/gas-preprocessor.pl

2.

chmod +x gas-preprocessor.pl

编译后的内容:

图片 8

编译完成后将FFmpeg-iOS-build-script-master内的FFmpeg-iOS文件夹拖到到x-code工程中,将kxMovie这个文件夹(最好下载最新的kxmovie,太久的会提示UIImage找不到)也拖入到工程中

图片 9

添加下面的依赖库

* 加入依赖库libz.tbd

* 加入依赖库libbz2.tbd

* 加入依赖库libiconv.tbd

这时运行可能会报错 #include “libavformat/avformat.h”这个头文件找不到

下面是解决办法

进入工程target settings 这里写图片描述

图片 10

搜索 library search paths 这里写图片描述

改为后缀是.lib的

然后复制这个lib的的这一条

在setting 的搜索框中搜索header search paths

这里写图片描述

添加刚才复制的改为.include的后缀

图片 11

运行发现工程不会报错了这样FFmpeg就算导入成功了

接下

在工程中引入#import "KxMovieViewController.h"

在创建解码的地方

图片 12

模拟器运行成功的:

图片 13

有啥问题也可以参考http://www.jianshu.com/p/fab457bef29c

图片 14

你也可以直接下载编译好的FFMpeg

链接: https://pan.baidu.com/s/1c1Nqeis 密码: 8twi

然后拖入x-code就是

本文由java编程发布,转载请注明来源:FFmpeg框架在iOS平台上的编译和使用,在iOS平台上