我是靠谱客的博主 幽默草莓,最近开发中收集的这篇文章主要介绍FFmpeg编译ios平台,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

做了一个解码直播视屏的项目(监控类的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平台所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部