zoukankan      html  css  js  c++  java
  • FFmpeg初体验

    因为昨天接到了“xx”公司的面试邀请,面试要求当中有提到硬性条件是:熟练使用FFMPEG进行视频编解码,所以为了能够更好的应对面试,今天在网上查了一下关于ffmpeg的资料,首推ffpeg官方文档:https://ffmpeg.org/ffmpeg.html

    FFmpeg简介

    FFmpeg是一个非常快速的视频和音频转换器,也可以从现场音频/视频源获取。它还可以在任意采样率之间进行转换,并使用高质量的多相滤波器即时调整视频大小。

    要使用FFMPEG,首先需要理解FFMPEG的代码结构。ffmpeg的代码是包括两部分的,一部分是library,一部分是tool。api都是在library里面,如果直接调api来操作视频的话,就需要写c或者c++了。另一部分是tool,使用的是命令行,则不需要自己去编码来实现视频操作的流程。实际上tool只不过把命令行转换为api的操作而已。

    FFMPEG的安装过程

    0、安装环境

    MacOS Sierra 10.12.5
    Xcode 8.3.2

    1、打开控制台,输入下面命令行进行安装:

    brew install ffmpeg 

    2、测试是否安装成功,随便在电脑上找一个视频文件,比如xxx.mp4,把它转换为yyy.avi格式,对其进行转换格式操作,命令行如下::

    ffmpeg -i xxx.mp4 yyy.avi

    如果能够顺利转换,可在根目录下查到yyy.avi格式的视频文件,表明安装ffmpeg成功。

     3、编译library,编译好之后可以调用FFmpeg的api。网上有一些方法,但都要自己手动编译,稍显复杂而且比较陈旧。按照app store的需求,编译出来的包还必须支持arm64。万能的github中有一个能够一键编译的脚本,地址如下:

    https://github.com/kewlbear/FFmpeg-iOS-build-script

    写这个脚本的是一个歪果仁,更新很及时,已经更新到了最新的3.3版本。下载下来,会有3个文件,其中一个是build-ffmpeg.sh脚本文件。在终端中转至脚本的目录,此处注意,一定要先进入文件所在的文件夹,在文件夹目录下执行以下命令: 

    ./build-ffmpeg.sh

    在FFmpeg3.3版本中,执行该句命令会报如下错误:

     该错误提示FFmpeg数据源没有找到,并且尝试去下载!我马上去查看了build-ffmpeg.sh这个脚本当中的source

     根据命令行报错提示,定位到一定是这里除了问题,对于17年1月苹果秉承一向强硬的态度,要求所有上架的APP必须使用HTTPS协议,所以断定,一定是链接协议没有及时更新为HTTPS,稍作更改如下:

     再次在终端跑一下build-ffmpeg.sh脚本

     脚本则会自动从github中把ffmpeg源码下到本地并开始编译。可以看出,已经下载完成。

    目录结构如下:

    其中,ffmpeg-3.3是源码,FFmpeg-iOS是编译出来的库,里面有我们需要的.a静态库,一共有7个。

     查看.a包支持的架构,执行命令如下:

    lipo -info libavcodec.a

    可查看到可支持armv7 armv7s i386 x86_64 arm64这几个架构

    4.在xcode中引入FFMPEG library库

    新建工程,把上面编译好的FFmpeg-iOS拖到xcode工程中,添加一个头文件引用

    #include "avformat.h"

    添加一个测试语句:

    av_register_all();

     点击编译,会报如下错误:

     很奇怪的错误,居然说XX文件找不到,此时应该在build setting当中的Header Search Paths配置文件路径,如下图所示:

     添加path为你自己当前FFmpeg-iOS当中include的全路径,示例如下:

     添加成功后,再次进行编译,会出现80多个错误,而且都是链接错误,错误的原因是FFmpeg依赖一部分库,此时只需要导入如下库:

    编译,运行工程,如果没有报错,则表明运行成功。



  • 相关阅读:
    Spring Mvc和Mybatis的多数据库访问配置过程
    Git下解决冲突
    安装Git
    数据库优化
    Ubuntu版 微信
    ssh框架简介
    写代码的习惯
    CentOS 7 安装 docker 并搭建私有仓库
    IPv4地址分类及特征
    Xcode 7.0 Could not find developer disk image
  • 原文地址:https://www.cnblogs.com/sleepingSun/p/7028966.html
Copyright © 2011-2022 走看看