网站后台工程师淘宝特价版

当前位置: 首页 > news >正文

网站后台工程师,淘宝特价版,电商网站商品中心设计方案,网站内页可以做关键词优化吗本文章记录ffmpeg 源码下载#xff0c;编译#xff0c;及使用。 一、FFMPEG 源码下载解压 源码官网地址#xff1a;http://ffmpeg.org/download.html#releases 下载最新版本ffmpeg6.0。 使用命令tar xvJf ffmpeg-6.0.tar.xz 解压。 二、了解FFMPEG源码 #xff08;一编译及使用。 一、FFMPEG 源码下载解压 源码官网地址http://ffmpeg.org/download.html#releases 下载最新版本ffmpeg6.0。 使用命令tar xvJf ffmpeg-6.0.tar.xz 解压。 二、了解FFMPEG源码 一configure编译脚本及帮助命令 ./configure –help –ffmpeg_help.txt1、Shell脚本:由第一行Shell解释器声明 #!/bin/sh 代码可以看出configure是Shell脚本。 2、configure 脚本作用该脚本用于生成make工具的构建脚本Makefile文件。 3、configure脚本执行该脚本需要进行配置才能执行如果直接执行会报错。 4、configure帮助命令 1脚本复杂c/c开源库都会提供一个configure脚本该脚本的配置非常复杂但一般都提供一个帮助选项 2帮助信息执行./configure –help 既可查看帮助信息。建议先将帮助信息熟悉一遍后再进行编译。 二配置configure脚本 1、FFMPEG编译流程 1配置使用configure脚本进行相关参数的配置。 2编译配置完毕后直接执行make命令开始进行编译。 2、配置的内容 1输出配置配置 生成的相关文件输出路径 2函数库配置配置静态库动态库。函数库优化等相关参数。 3命令行程序配置配置是否生成命令行程序FFMPEG 自带3个命令行程序。 4编译组件配置FFMPEG有22个可选的独立组件配置可以选择性编译或不编译某些组件。 5编码解码配置配置FFMPEG编解码功能。 6交叉编译配置重点配置交叉编译工具链、头文件、库文件查找路径参数GCC编译器参数CPU架构等参数。 三输出目录配置 1 、生成文件的输出目录 : FFMPEG 编译后需要生成一系列的函数库 , 及头文件等 ; 需要为这些生成的文件指定输出目录 。 2、指定生成的文件输出位置 。 1定义变量 : 使用 PREFIX./android/arme64-v8a命令 , 定义输出目录根目录变量 2 路径配置 : 使用 ./configure –prefixPREFIX 命令 , 指定输出文件的根目录为 ./android/arme64-v8a ;

将输出目录存储到 PREFIX 变量中

PREFIX./android/arme64-v8a# 执行 configure 脚本配置输出文件的根目录 ./configure –prefix$PREFIX3、自动生成其它目录 : 指定了 –prefix 选项 , 那么其它生成 bin 可执行文件目录 , lib 函数库目录 等类型的文件输出目录会在 –prefix 配置的目录基础上生成 。 1 根目录 : 指定了 –prefix 目录为 ./android/arme64-v8a ; 2 可执行文件目录 : 自动生成的可执行文件输出目录为 PREFIX/bin , 即 ./android/arme64-v8a/bin ; 3 函数库目录 : 自动生成的函数库数据目录为 PREFIX/lib , 即 ./android/arme64-v8a/lib ; 其它的标准选项配置 ( Standard options ) 请仔细阅读下面的 configure 帮助文档内容 ;
四函数库配置 1、 函数库配置 : FFMPEG 编译时 , 可以选择编译静态库或动态库 , 及设置编译函数库的行为 ; 2、 默认编译的函数库 : FFMPEG 默认编译静态库 , 此处也推荐在 Android 中使用 FFMPEG 静态库开发音视频功能 , 保持默认状态即可 ; 3、优化函数库 : 1设置后效果 : FFMPEG 编译时可以选择优化函数库大小 , 让编译出来的函数库尽可能小 , 但相应的编译速度会降低很多 ; 2设置的要性 : 由于是在 Android 中进行开发 , 为了使打包后的 APK 文件尽可能小 , 这里我们需要开启该选项 ; 3设置命令 : 调用 ./configure –enable-small 命令 , 启用优化函数库大小的功能

启用函数库大小优化

./configure –enable-small其它的配置选项 ( Configuration ) 请仔细阅读下面的 configure 帮助文档内容 ; 五程序配置选项 1FFMPEG 命令行程序 : FFMPEG 提供了一些可执行的命令行程序 , 如 ffmpeg.exe , ffplay.exe , ffprobe.exe 等程序 2 使用情况 : 在 Android 开发中只需要 FFMPEG 的函数库 , 不需要这些程序 , 建议关闭命令行程序编译选项 3配置命令 : 调用 ./configure –disable-programs 命令 , 关闭编译命令行程序的功能 。

关闭编译命令行程序

./configure –disable-programs其它的配置选项 ( Configuration ) 请仔细阅读下面的 configure 帮助文档内容 六组件配置选项 1、组件配置选项 默认状态 : FFMPEG 组件选项 , 默认都是打开的 , 如果需要关闭某一个需要单独配置 2、FFMPEG 常用组件 1avdevice 组件 : 操作摄像头等视频设备 , Android 中是不支持该操作 , 需要手动关闭 2avcodec 组件 : 声音 / 图像编解码组件 3avformat 组件 : 音视频封装格式生成或解析 4swresample 组件 : 音频重采样 , 修改音频参数 5swscale 组件 : 视频场景比例缩放 , 色彩映射转换 6postproc 组件 : 后期效果处理 , 这里不需要 , 需要手动关闭 7 avfilter 组件 : 过滤器 , 添加字幕水印。 3、关闭 avdevice 配置命令 : 调用 ./configure –disable-avdevice 命令 , 关闭 avdevice 模块编译。

关闭编译命令行程序

./configure –disable-avdevice其它的组件配置选项 ( Configuration ) 请仔细阅读下面的 configure 帮助文档内容 。 七编码配置 1、提供的编码配置 1编码器 : 关闭指定编码器 , 关闭所有编码器 , 打开指定编码器 2解码器 : 关闭指定解码器 , 关闭所有解码器 , 打开指定解码器 2、 关闭编码配置命令 : 调用 ./configure –disable-encoders 命令 , 关闭编码器模块编译

关闭编译编码器

./configure –disable-encoders3、 关闭混合封装配置命令 : 调用 ./configure –disable-muxers 命令 , 关闭混合封装模块编译

关闭混合封装

./configure –disable-muxers4、关闭视频滤镜配置命令 : 调用 ./configure –disable-filters 命令 , 关闭视频滤镜模块编译

关闭视频滤镜

./configure –disable-filters其它的单个组件配置选项 ( Configuration ) 请仔细阅读下面的 configure 帮助文档内容 三、交叉编译 一 ffmpeg4.1.11 ndk17 编译arm32平台库 参考文章参考博客https://blog.csdn.net/shulianghan/article/details/104351312 1、官网下载ffmpeg4.1.11版本并解压。省略 2、官网下载ndk17版本。省略。 具体方法参考文章“ndk开发-交叉编译”。 3、执行./configure 进入ffmpeg-4.1.11文件夹 cd ffmpeg-4.1.112修改权限到root权限 sudo su root3执行命令 ./configure执行后我这里会报错如下。 解决方案安装asm. 下载yasm-1.3.0版本并解压。下载地址http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz tar -zxvf yasm-1.3.0.tar.gz 进入yasm-1.3.0文件夹执行./configure 执行make指令 安装成功。 再回到ffmpeg-4.1.11文件夹执行./configure指令不会报错。 4编写编译脚本 将参考文章https://blog.csdn.net/shulianghan/article/details/104351312中的编译脚本拷贝过来。修改。 a 新建“build_ffmpeg.sh”文件夹 b 拷贝编译脚本并修改ndk根目录。 #!/bin/bash# NDK 根目录(按照自己的路径修改) NDK_ROOT/home/vagrant/software/ndk/android-ndk-r17c# TOOLCHAIN 变量指向 gcc g 等交叉编译工具所在的目录 TOOLCHAIN\(NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64# gcc 编译器参数 FLAGS-isysroot \)NDK_ROOT/sysroot -isystem \(NDK_ROOT/sysroot/usr/include/arm-linux-androideabi -isystem \)NDK_ROOT/sources/android/support/include -DANDROID_API21 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -marcharmv7-a -mfloat-abisoftfp -mfpuvfpv3-d16 -mthumb -Wa,–noexecstack -Wformat -Werrorformat-security -O0 -fPIC# 编译结果输出路径 PREFIX./android/armeabi-v7a# 执行 configure 脚本生成 Makefile 构建脚本 ./configure
–prefix\(PREFIX \ --enable-small \ --disable-programs \ --disable-avdevice \ --disable-encoders \ --disable-muxers \ --disable-filters \ --enable-cross-compile \ --cross-prefix\)TOOLCHAIN/bin/arm-linux-androideabi-
–sysroot\(NDK_ROOT/platforms/android-21/arch-arm \ --extra-cflags\)FLAGS
–archarm
–target-osandroid # 清除之前的编译内容 make clean# 开启新的 FFMPEG 编译 make installc 在ffmpeg文件夹新建android/armeabi-v7a文件夹。 d chmod 777 build_ffmpeg.sh 添加权限 e ./build_ffmpeg.sh 执行脚本 生成一下文件说明编译成功。可以使用file xxx查看生成的库文件是否为arm32平台。 注意很奇怪使用同样的linux环境ndk和ffmpeg第一次用该脚本编译报错。今天重新做一遍又不会报错。把报错及解决方法记录一下。 修改方法去掉脚本中“-DANDROID_API21 -g -DANDROID”完成脚本如下可以编译so 动态库和静态库。 #!/bin/bash# NDK 根目录 NDK_ROOT/home/vagrant/software/ndk/android-ndk-r17c# TOOLCHAIN 变量指向 gcc g 等交叉编译工具所在的目录 TOOLCHAIN\(NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64# gcc 编译器参数 FLAGS-isysroot \)NDK_ROOT/sysroot -isystem \(NDK_ROOT/sysroot/usr/include/arm-linux-androideabi -isystem \)NDK_ROOT/sources/android/support/include -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -marcharmv7-a -mfloat-abisoftfp -mfpuvfpv3-d16 -mthumb -Wa,–noexecstack -Wformat -Werrorformat-security -O0 -fPIC#FLAGS-isysroot \(NDK_ROOT/sysroot -isystem \)NDK_ROOT/sysroot/usr/include/arm-linux-androideabi -isystem \(NDK_ROOT/sources/android/support/include -D__ANDROID_API__21 -g -DANDROID -ffunction-sections -#funwind-tables -fstack-protector-strong -no-canonical-prefixes -marcharmv7-a -mfloat-abisoftfp -mfpuvfpv3-d16 -mthumb -Wa,--noexecstack -Wformat -Werrorformat-security -O0 -fPIC# 编译结果输出路径 PREFIX./android/armeabi-v7a# 执行 configure 脚本生成 Makefile 构建脚本 ./configure \ --prefix\)PREFIX
–enable-small
–disable-programs
–enable-static
–enable-shared
–disable-avdevice
–disable-encoders
–disable-muxers
–disable-filters
–enable-cross-compile
–cross-prefix\(TOOLCHAIN/bin/arm-linux-androideabi- \ --sysroot\)NDK_ROOT/platforms/android-21/arch-arm
–extra-cflags\(FLAGS \ --archarm \ --target-osandroid # 清除之前的编译内容 make clean# 开启新的 FFMPEG 编译 make install#--extra-cflags\)FLAGS