我是靠谱客的博主 冷酷火,最近开发中收集的这篇文章主要介绍音视频之一FFmpeg交叉编译一、下载ffmpeg源码二、配置编译脚本三、总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、下载ffmpeg源码
    • 1.1 注意
  • 二、配置编译脚本
    • 2.1 修改配置文件
    • 2.2 编写shell 编译脚本
    • 2.3 查看编译结果
  • 三、总结
    • 3.1 No such file or directory
    • 3.2 C compiler test failed
    • 3.3 参考链接


一、下载ffmpeg源码

FFmpeg官网下载地址
下载最新的ffmpeg代码

1.1 注意

在这里插入图片描述
我们可以在如上图中所示的地方,下载已经编译好的ffmpeg二进制文件,免去编译工作。

二、配置编译脚本

2.1 修改配置文件

在这里插入图片描述
解压下载的ffmpeg源码压缩文件, 进行解压缩操作,获得ffmpeg源码文件夹。在其子目录下存在configure文件。需要修改配置文件。

需要将:

	SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
	LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
	SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
	SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
修改为:	

	SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
	LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
	SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
	SLIB_INSTALL_LINKS='$(SLIBNAME)'

2.2 编写shell 编译脚本

shell 脚本内容如下:

	#!/bin/bash
	#指定临时文件,用来缓存编译信息用的
	export TMPDIR=/Users/zhangfengcheng/android/canjun/ffmpeg/tmp  
	ADDI_CFLAGS="-marm"
	API=19
	PLATFORM=arm-linux-androideabi
	 #指定CPU架构
	CPU=armv7-a 
	# 设置NDK 路径
	NDK=~/android/android-ndk-r17c  
	SYSROOT=$NDK/platforms/android-$API/arch-arm/
	ISYSROOT=$NDK/sysroot
	ASM=$ISYSROOT/usr/include/$PLATFORM
	TOOLCHAIN=$NDK/toolchains/$PLATFORM-4.9/prebuilt/darwin-x86_64
	# 编译产物输出路径
	OUTPUT=/Users/zfc/android/canjun/ffmpeg/out 
	# 显式指定c语言编译器路径变量
	CC=$TOOLCHAIN/bin/arm-linux-androideabi-gcc
	# 显式指定C++编译器路径变量
	CXX=$TOOLCHAIN/bin/arm-linux-androideabi-g++
	# 声明方法
	function build
	{
	./configure 
	--prefix=$OUTPUT 
	--enable-shared 
	--disable-static 
	--disable-doc 
	--disable-ffmpeg 
	--disable-ffplay 
	--disable-ffprobe 
	--disable-avdevice 
	--disable-doc 
	--disable-symver 
	--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- 
	--target-os=android 
	--arch=arm 
	--enable-cross-compile 
	--sysroot=$SYSROOT 
	--extra-cflags="-I$ASM -isysroot $ISYSROOT -Os -fpic -marm" 
	--extra-ldflags="-marm" 
	--cc=$CC  
	--cxx=$CXX 
	$ADDITIONAL_CONFIGURE_FLAG
	make clean
	make -j8
	make install
	}
	build

接下来,就是执行该脚本:

	(假设脚本问价命名为:android_build.sh)
	chmod 777 android_build.sh   //赋予脚本执行权限,这里是最高权限
	sudo ./android_build.sh  //以root用户的权限执行该脚本

2.3 查看编译结果

在路径/Users/zfc/android/canjun/ffmpeg/out 下:
在这里插入图片描述

三、总结

当我们想要在Android、iOS上自己定制化一个音视频工具,ffmpeg是一个非常好的选择。在使用ffmpeg库时,在PC针对移动平台进行交叉ffmpeg则是这开头的第一步。对于App开发者来说,稍有不慎,交叉编译可能会阻碍你的步伐。于是,我也记录一下编译时遇到的问题,供各位道友参考。

3.1 No such file or directory

在这里插入图片描述
解决办法:

执行./configure --disable-x86asm 生成config.mak文件

3.2 C compiler test failed

在这里插入图片描述
根据 ffbuild/config.log的日志发现,指定的编译器不存在。

3.3 参考链接

问题解决,参考链接如下:
Clang编译FFmpeg常见问题
移植FFMpeg到Android:Ubuntu(Linux) FFMpeg编译

最后

以上就是冷酷火为你收集整理的音视频之一FFmpeg交叉编译一、下载ffmpeg源码二、配置编译脚本三、总结的全部内容,希望文章能够帮你解决音视频之一FFmpeg交叉编译一、下载ffmpeg源码二、配置编译脚本三、总结所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部