概述
做了一个解码直播视屏的项目(监控类的RTSP流),项目结束了,记录一下之前编译FFmpeg的梗,网络上很多说怎么编译FFmpeg的但是看着都像是一个人写的,都是一样,都在复制,但是解决问题的速度确实很慢,我在这总结一下,以供后来人少走弯路;
1.下载下面5个文件
gas-preprocessor 地址 https://github.com/applexiaohao/gas-preprocessor
yasm https://github.com/yasm/yasm
FFmpeg-iOS-build-script https://github.com/applexiaohao/FFmpeg-iOS-build-script
ffmpeg http://www.ffmpeg.org/releases/?C=M;O=D
kxmovie https://github.com/applexiaohao/kxmovie
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.命令
1.
chmod 777 /usr/sbin/gas-preprocessor.pl
2.
chmod +x gas-preprocessor.pl
4.此时为了编译时有问题我们现在进入下载后的yasm文件夹,通过编译安装命令yasm
cd 将文件拖进来回车
./configure && make -j 4 && sudo make install
如果上一步不行使用Homebrew包管理器,进行安装
首先检查Homebrew包管理器是否安装
终端命令输入 brew
如果没有安装 Homebrew包管理器
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
执行完之后输入下面的命令安装yasm
brew install yasm
接下来
执行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 lipo
接下来就是等终端自己编译不用再管,大概要十几分钟
编译完成后导入到工程中将kxMovie这个文件也导入到工程中
添加下面的依赖库
加入依赖库libz.lib
加入依赖库libbz2.lib
加入依赖库libiconv.lib
这时运行可能会报错 #include “libavformat/avformat.h”这个头文件找不到
下面是解决办法
进入工程target settings
搜索 library search paths
改为后缀是.lib的
然后复制这个lib的的这一条
在setting 的搜索框中搜索header search paths
添加刚才复制的改为.include的后缀
运行发现工程不会报错了这样FFmpeg就算导入成功了
接下
在工程中引入#import "KxMovieViewController.h"
在创建解码的地方
NSString *path = @"http://www.qeebu.com/newe/Public/Attachment/99/52958fdb45565.mp4";
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
if ([path.pathExtension isEqualToString:@"wmv"])
parameters[KxMovieParameterMinBufferedDuration] = @(5.0);
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
parameters[KxMovieParameterDisableDeinterlacing] = @(YES);
KxMovieViewController *vc = [KxMovieViewController movieViewControllerWithContentPath:path parameters:parameters];
[self presentViewController:vc animated:YES completion:nil];
这样就可以看到播放的画面了
注意不要在程序进入到根视图就去解码,我发现这样不可以,要viewdidload以后才可以,希望可以帮助到你
最后
以上就是幽默草莓为你收集整理的FFmpeg编译ios平台的全部内容,希望文章能够帮你解决FFmpeg编译ios平台所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复