FFmpeg(一):集成与编译

2018-06-24  本文已影响38人  Cooci_和谐学习_不急不躁

FFmpeg的安装集成

一. 安装FFMpeg

注意:input.mp4 为你需要转换的视频文件, output.avi为转换后输出的视频文件。(文件尽量小一点,有点耗时~~~)

二. 编译FFMpeg

运行到这里,是不是感觉这个脚本牛逼,因为网上很多教程,博客,文章都说要你先yasmgas-preprocessor.pl 但是这里不需要,那些都是一些浪费时间,build-ffmpeg.shbrew 还有yasm 以及gas-preprocessor.pl都有判断,如果没有就自动去安装更新,顿时感觉超爽超简单,对于shell脚本是不是有了一个更新的认识.前面安装brew原因是你帮助在终端安装ffmpeg,要知道ffmpeg是C写的,所以不再iOS平台一样玩

脚本会自动编译FFMpeg,过程比较长,请耐心等待。

最终文件目录如下:


添加编译命令需要的文件


在编译的时候我们需要修改ffmpeg.c的main函数,因为一个程序不能有两个main函数,在这里我们改成ffmpeg_main,如下所示:

int ffmpeg_main(int argc, char **argv)
{
    int ret;
    int64_t ti;

    register_exit(ffmpeg_cleanup);

    setvbuf(stderr,NULL,_IONBF,0); /* win32 runtime needs this */

    av_log_set_flags(AV_LOG_SKIP_REPEATED);
    parse_loglevel(argc, argv, options);

    if(argc>1 && !strcmp(argv[1], "-d")){
        run_as_daemon=1;
        av_log_set_callback(log_callback_null);
        argc--;
        argv++;
    }

    //以下是省略内容
    ...
}

我们还需要修改cmdutils.c中的exit_program函数,删掉函数中原来的内容, 添加 return ret;并修改函数的返回类型为int。如果不修改,在FFmpeg命令执行完成后,程序会退出。

int exit_program(int ret);

int exit_program(int ret)
{
    //if (program_exit)
    //    program_exit(ret);

    //exit(ret);
    return ret;
}

编译好后我们通过lipo -create 命令生成模拟器和真机架构的通用库。

lipo -create /Users/LM/Library/Developer/Xcode/DerivedData/FFmpeg-cvfzxtnwpwznsfclqrttxwgczhjv/Build/Products/Debug-iphonesimulator/libFFmpeg.a /Users/qinmin/Library/Developer/Xcode/DerivedData/FFmpeg-cvfzxtnwpwznsfclqrttxwgczhjv/Build/Products/Debug-iphoneos/libFFmpeg.a -output /Users/qinmin/Desktop/libFFmpeg.a

这里为了方便,我直接打包了.a

变异完美

上一篇 下一篇

猜你喜欢

热点阅读