FFmpeg的安装集成
一. 安装FFMpeg
- 在安装FFmpeg前可以需要先安装Brew, 在终端上输入:
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
- 在安装FFmpeg前可以需要先安装Brew, 在终端上输入:

- 2.安装Brew成功后,安装FFMpeg, 在终端上输入:
brew install ffmpeg
- 3.安装结束后,可以尝试以下命令:验证是否安装成功
ffmpeg -i /Users/LM/Desktop/test.mp4 /Users/LM/Desktop/test.avi
如果能顺利转换,表明安装成功。
注意:input.mp4 为你需要转换的视频文件, output.avi为转换后输出的视频文件。(文件尽量小一点,有点耗时~~~)

二. 编译FFMpeg
- 1.首先需要先下载一个能“一键编译”的脚本,地址如下
https://github.com/kewlbear/FFmpeg-iOS-build-script
下载成功的文件如下:
- 2.打开终端进入到该文件目录, 我的操作如下:
cd +空格+ 将刚刚下载成功的FFmpeg-iOS-build-script文件拖到终端
-
3.进入该文件目录后执行命令
./build-ffmpeg.sh
运行到这里,是不是感觉这个脚本牛逼,因为网上很多教程,博客,文章都说要你先
yasm
,gas-preprocessor.pl
但是这里不需要,那些都是一些浪费时间,build-ffmpeg.sh
对brew
还有yasm
以及gas-preprocessor.pl
都有判断,如果没有就自动去安装更新,顿时感觉超爽超简单,对于shell脚本是不是有了一个更新的认识.前面安装brew
原因是你帮助在终端安装ffmpeg
,要知道ffmpeg
是C写的,所以不再iOS平台一样玩

脚本会自动编译FFMpeg,过程比较长,请耐心等待。
- 4.编译成功后的文件目录如下:4个文件夹是新生成的,其中FFmpeg-iOS为我们所需要的。

-
5.将FFmpeg-iOS拷贝到工程中,如下图所示。打开工程右键Add files to HHTMovie工程即可。
-
6.添加依赖的系统库
- AudioToolbox.framework
- CoreMedia.framework
- VideoToolbox.framework
- libz.tbd
- libbz2.tbd
- libiconv.tbd
- AVFoundation.framework
最终文件目录如下:

- 7.添加 Header Search Paths 设置
$(SRCROOT)/项目名/所在文件夹/FFmpeg-iOS/include
添加编译命令需要的文件




在编译的时候我们需要修改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
变异完美
网友评论