FFmpeg编译ios平台
来源:互联网 发布:淘宝网出售二手床 编辑:程序博客网 时间:2024/05/21 15:40
做了一个解码直播视屏的项目(监控类的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平台
- iOS平台编译FFmpeg最新版
- 编译针对iOS平台的ffmpeg
- Windows平台编译ffmpeg
- FFmpeg windows平台编译
- FFmpeg windows平台编译
- FFmpeg windows平台编译
- FFmpeg windows平台编译
- FFMPEG WINDOWS平台编译
- FFmpeg windows平台编译
- FFmpeg windows平台编译
- Windows平台编译ffmpeg
- windows平台ffmpeg编译
- windows平台编译ffmpeg
- ios平台模拟器与真机下ffmpeg的编译
- iOS平台FFmpeg编译测试运行(备忘)
- FFmpeg框架在iOS平台上的编译和使用
- FFmpeg框架在iOS平台上的编译和使用
- java 初始化及执行顺序
- 排序算法实现
- 为什么RSA 公钥指数(e=65537)
- try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
- 前端web开发的MVC模式
- FFmpeg编译ios平台
- 都说Djnago框架重,那就让哥用15行代码写个django web程序!
- MATLAB数学建模(9)-遗传算法工具
- Java基础-面向对象小知识(上)
- 液晶设计参数确定
- iOS UIButton 点击事件带多参数
- CentOS中vsftp安装、配置、卸载
- 统计Xcode的源码行数
- iOS中cookie使用