FFNPEG编译脚本
下面是一个ffmpeg编译脚本:
#!/bin/bash
set -eu -o pipefail
set +eu +o pipefailFFMPEG_TAG=n4.5-dev
build_path=$1
git_repo="https://github.com/FFmpeg/FFmpeg.git"
cache_tool=""
sysroot=""
c_compiler="gcc"
cxx_compiler="g++"
ffmpeg_dir=""
build_only=false
parallel="-j$(nproc)"usage="Usage: $0 [FFMPEG_TAG [build_path [git_repo [cache_tool]]]] [Options]Options:FFMPEG_TAG FFMPEG git tag. (default $FFMPEG_TAG)build_path Target folder to build. (default \$(pwd))git_repo Link of FFmpeg.git. (default $git_repo)[-c ]cache_tool ccache or sccache-S sysroot sysroot-C c-compiler c compiler-X cxx-compier cxx compiler-F ECFLAGS add ECFLAGS to CFLAGS []-s ffmpeg_dir ffmpeg_dir cloned.-j parallel make -j parallel default is \$(nproc)-b build only
exp:1. $0 $FFMPEG_TAG \$(pwd) $git_repo ccache2. $0 $FFMPEG_TAG -c ccache
"for _ff in FFMPEG_TAG build_path git_repo cache_tool; doif [ "${1::1}" = "-" ]; thenbreakelseeval $_ff="$1"shiftfi
donewhile getopts ':hc:C:X:S:bs:j:' opt; docase "$opt" inb)build_only=true;;c)cache_tool="$OPTARG ";;C)c_compiler="$OPTARG";;X)cxx_compiler="$OPTARG";;S)sysroot="--sysroot=$OPTARG";;s)ffmpeg_dir=$(realpath $OPTARG);;j)if [ "$OPTARG" -eq "$OPTARG" ]; thenparallel="-j $OPTARG"elseecho "$OPTARG should be a number, use '$parallel' by default"fi;;? | h)echo "$usage"exit 1;;esac
donesrc_path=$(dirname $(readlink -f $0))
echo "src path: ${src_path}"
echo "build path: ${build_path}"
echo "ffmpeg path: ${ffmpeg_dir}"if [ -z $ffmpeg_dir ]; thenecho "delete old FFmpeg files"rm -rf ${build_path}/FFmpeg-${FFMPEG_TAG}rm -rf ${build_path}/ffmpeg_gcuecho "download FFmpeg-${FFMPEG_TAG}"git clone -b ${FFMPEG_TAG} $git_repo ${build_path}/FFmpeg-${FFMPEG_TAG}ffmpeg_dir=${build_path}/FFmpeg-${FFMPEG_TAG}
elif ! [ -d $ffmpeg_dir ]; thenecho "FFmpeg need to be cloned to $ffmpeg_dir"exit 1
fiecho "copy FFmpeg GCU Plugin files info FFmpeg source tree"
cd $ffmpeg_dir
cp ${src_path}/src/configure ${ffmpeg_dir}/
cp ${src_path}/src/libavformat/* ${ffmpeg_dir}/libavformat/
cp ${src_path}/src/libavcodec/* ${ffmpeg_dir}/libavcodec/
cp ${src_path}/src/libavutil/* ${ffmpeg_dir}/libavutil/
cp ${src_path}/src/examples/* ${ffmpeg_dir}/doc/examples/echo "configure FFmpeg"
./configure \--prefix=${build_path}/ffmpeg_gcu \--extra-cflags="-g" \--extra-ldflags="-fuse-ld=gold" \--extra-ldflags="-m64 -lefrt -lefdrv -ltopsrt -ltopscodec -ldl -lpthread" \--disable-stripping \--disable-x86asm \--enable-swscale \--disable-decoders \--disable-optimizations \--enable-topscodec \--enable-decoder=vc1 \--enable-decoder=av1 \--enable-decoder=h264 \--enable-decoder=hevc \--enable-decoder=vp8 \--enable-decoder=vp9 \--enable-decoder=mpeg4 \--enable-decoder=mpeg2video \--enable-decoder=mjpeg \--enable-decoder=h264_topscodec \--enable-decoder=hevc_topscodec \--enable-decoder=mpeg2_topscodec \--enable-decoder=mpeg4_topscodec \--enable-decoder=h263_topscodec \--enable-decoder=vc1_topscodec \--enable-decoder=vp8_topscodec \--enable-decoder=vp9_topscodec \--enable-decoder=avs_topscodec \--enable-decoder=avs2_topscodec \--enable-decoder=mjpeg_topscodec \--enable-decoder=av1_topscodec \--cc="${cache_tool}$c_compiler" \--cxx="${cache_tool}$cxx_compiler" \$sysroot \--enable-cross-compile \--disable-static \--enable-sharedif [ $? -ne 0 ]; thenecho "configure failed"exit 1
fimake cleanecho "make"
make $parallel
if [ $? -ne 0 ]; thenecho "make failed"exit 1
fiecho "make examples"
make examples -j
if [ $? -ne 0 ]; thenecho "make examples failed"exit 1
fiif $build_only; thenexit 0
fiecho "make install"
make install
if [ $? -ne 0 ]; thenecho "make install failed"exit 1
ficp ${ffmpeg_dir}/doc/examples/hw_decode_tops ${build_path}/ffmpeg_gcu/bin
cp ${ffmpeg_dir}/doc/examples/decode_tops ${build_path}/ffmpeg_gcu/bin
相关文章:
FFNPEG编译脚本
下面是一个ffmpeg编译脚本: #!/bin/bash set -eu -o pipefail set eu o pipefailFFMPEG_TAGn4.5-dev build_path$1 git_repo"https://github.com/FFmpeg/FFmpeg.git" cache_tool"" sysroot"" c_compiler"gcc" cxx_compile…...
Python期末复习题库(下)——“Python”
小雅兰期末加油冲冲冲!!! 1. (单选题)下列关于文件打开模式的说法,错误的是( C )。 A. r代表以只读方式打开文件 B. w代表以只写方式打开文件 C. a代表以二进制形式打开文件 D. 模式中使用时,文件可读可写 2. (单选题)下列选项中,以追加…...
tauri中使用rust调用动态链接库例子(使用libloading库和libc库)
前言 当前采用桌面端框架位tauri,现在需要调用读卡器等硬件设备,硬件厂商提供了32位的动态链接库,现在记录例子,需要注意的点是使用libloading库和libc库, [package] name "yyt-device-rust" version &q…...
Leetcode—739.每日温度【中等】
2023每日刷题(四十二) Leetcode—739.每日温度 单调栈实现思想 从右到左实现代码 class Solution { public:vector<int> dailyTemperatures(vector<int>& temperatures) {int n temperatures.size();stack<int> st;vector<i…...
毕业设计单片机可以用万能板吗?
毕业设计单片机可以用万能板吗? 可以是可以,就是焊接起来比较麻烦,特别是有好几个重复连线点的时候,检测起来就不那么容易了,而且布线看起来乱糟糟的,如果后期一不小心把线弄断了,查起来就更麻烦了&#x…...
spring boot整合Jasypt实现配置加密
文章目录 目录 文章目录 前言 一、Jasypt是什么? 二、使用步骤 1.引入 2.测试使用 3.结果 总结 前言 一、Jasypt是什么? Jasypt(Java Simplified Encryption)是一个Java库,提供了一种简单的加密解密方式,…...
java学校高校运动会报名信息管理系统springboot+jsp
课题研究方案: 结合用户的使用需求,本系统采用运用较为广泛的Java语言,springboot框架,HTML语言等关键技术,并在idea开发平台上设计与研发创业学院运动会管理系统。同时,使用MySQL数据库,设计实…...
Java(七)(Lambda表达式,正则表达式,集合(Collection,Collection的遍历方式))
目录 Lambda表达式 省略写法(要看懂) 正则表达式 语法 案例 正则表达式的搜索替换和分割内容 集合进阶 集合体系结构 Collection Collection的遍历方式 迭代器 增强for循环 Lambda表达式遍历Collection List集合 ArrayList LinkedList 哈希值 HashSet底层原理 …...
华为OD机试 - 二叉树计算(Java JS Python C)
目录 题目描述 输入描述 输出描述 用例 题目解析 JS算法源码 Java算法源码...
鸿蒙(HarmonyOS)应用开发——基础组件
组件 组件化是一种将复杂的前端应用程序分解成小的、独立的部分的方法。这些部分被称为组件,它们可以重复使用,可以与其他组件组合使用以创建更复杂的组件,并且它们有自己的生命周期和状态。 组件化的目的是提高开发效率和代码重用率&#…...
Vue3的项目创建到启动
Vue3的项目创建 检查node版本创建 npm init vuelatest 安装依赖 项目启动 启动成功...
开关电源基础而又硬核的知识
1.什么是Power Supply? Power Supply是一种提供电力能源的设备,它可以将一种电力能源形式转换成另外一种电力能源形式,并能对其进行控制和调节。 根据转换的形式分类:AC/DC、DC/DC、DC/AC、AC/AC 根据转换的方法分类:线性电源、…...
LightDB23.4 支持转换sql中中文空格和逗号为英文空格和逗号
功能介绍 在Lightdb数据库兼容Oracle的语法时,发现Oracle支持sql语句中使用中文空格和中文逗号,为了方便用户迁移到Lightdb,在Lightdb23.4版本中支持了转换中文空格和逗号的功能。该功能由GUC参数lightdb_convert_chinese_char来控制开关&am…...
EM@常见平面曲线的方程的不同表示方式
文章目录 abstract常见曲线的不同形式小结:一览表分析圆锥曲线的极坐标方程非标准位置的圆锥曲线参数方程应用比较 refs abstract 常见平面曲线的方程的不同表示方式 常见曲线的不同形式 下面以平面曲线为对象讨论参数方程通常是对普通方程的补充和增强,曲线的普通方程(直角…...
element使用小结
1、tabel表头文字自定义效果(换行,不同颜色) 换行: // 方法一 <el-table-columnprop"otherCost":label"本期累计\n(元)"> // 通过:label添加\n </el-table-column>.xx .cell {white-space: pre-…...
自动驾驶DCLC 功能规范
目录 1 概述Summary....................................................................................................... 4 1.1 目的Purpose....................................................................................................... 4 1.2 范围Ran…...
LabVIEW中将SMU信号连接到PXI背板触发线
LabVIEW中将SMU信号连接到PXI背板触发线 本文介绍如何将信号从PXI(e)SMU卡路由到PXI(e)机箱上的背板触发线。该过程涉及使用NI-DCPowerVI将SMU信号导出到PXI_TRIG线上。 在继续操作之前,请确保在开发PC上安装了兼容版…...
[蓝桥杯习题]———位运算、判断二进制1个数
⭐Hello!这里是欧_aita的博客。 ⭐今日语录:行动胜过一切。 ⭐个人主页:欧_aita ψ(._. )>⭐个人专栏: 数据结构与算法(内含蓝桥杯习题) MySQL数据库 位运算 位运算位运算的定义简单运用 实战刷题题目思路代码实现声…...
3DCAT为华东师大设计学院打造元宇宙数字虚拟学院
6月11日,华东师范大学设计学院在chi K11美术馆举办了一场别开生面的 2023 年本科毕业设计暨项目实践教学现场演示展。其中,元宇宙数字虚拟学院(一期)的现场发布会引起了现场震撼,吸引了众多观众的目光和参与。 该元宇宙…...
AIGC 3D即将爆发,混合显示成为产业数字化的生产力平台
2023年,大语言模型与生成式AI浪潮席卷全球,以文字和2D图像生成为代表的AIGC正在全面刷新产业数字化。而容易为市场所忽略的是,3D图像生成正在成为下一个AIGC风口,AIGC 3D宇宙即将爆发。所谓AIGC 3D宇宙,即由文本生成3D…...
像素冒险工坊初体验:维度裂变器真实使用报告,文字创作从未如此有趣
像素冒险工坊初体验:维度裂变器真实使用报告,文字创作从未如此有趣 1. 走进像素冒险工坊 当我第一次打开像素语言维度裂变器时,仿佛穿越回了16-bit游戏黄金年代。这款基于MT5-Zero-Shot-Augment核心引擎构建的文本增强工具,彻底…...
**雾计算中的边缘智能:基于Python的轻量级任务调度系统设计与实现**在物联网(IoT)飞速发展的今天,传统云
雾计算中的边缘智能:基于Python的轻量级任务调度系统设计与实现 在物联网(IoT)飞速发展的今天,传统云计算模式已难以满足低延迟、高带宽和实时响应的需求。**雾计算(Fog Computing)**作为云与终端设备之间的…...
3步打造自平衡机器人:零基础实战DIY攻略
3步打造自平衡机器人:零基础实战DIY攻略 【免费下载链接】Cubli_Mini 项目地址: https://gitcode.com/gh_mirrors/cu/Cubli_Mini 自平衡机器人作为 robotics 领域的经典项目,一直是爱好者入门的理想选择。Cubli_Mini 作为开源项目中的佼佼者&…...
避开这些坑!FFmpeg.wasm在Vue项目中的完整避坑指南(含SharedArrayBuffer报错解决方案)
FFmpeg.wasm在Vue项目中的深度实践与疑难解析 当现代Web应用需要处理音视频编辑、转码或流媒体时,FFmpeg.wasm正成为前端开发者的利器。本文将深入探讨如何在高安全要求的Vue项目中稳定集成这一技术方案,特别针对生产环境中可能遇到的SharedArrayBuffer限…...
IntelliJ IDEA中SVN与Git版本管理的高效配置指南
1. 为什么需要版本管理工具? 如果你曾经因为误删代码而熬夜重写,或者因为团队协作时文件覆盖而崩溃,那你一定需要版本管理工具。想象一下,代码就像写作文时的草稿纸——每次修改都保留历史版本,随时可以回退到上周二下…...
C++ 网络服务端主线:从线程池到 Reactor 的完整路线图
一、为什么要写这个系列? 前面我已经把 C 并发基础和线程池完整走了一遍: std::threadstd::mutexstd::condition_variablestd::atomic手写线程池future / 拒绝策略 / 优雅关闭 但到这里,其实还只停留在: 并发组件层 也就是说&a…...
w3x2lni:魔兽地图跨版本兼容解决方案技术指南
w3x2lni:魔兽地图跨版本兼容解决方案技术指南 【免费下载链接】w3x2lni 魔兽地图格式转换工具 项目地址: https://gitcode.com/gh_mirrors/w3/w3x2lni 价值定位:破解魔兽地图版本壁垒 当你尝试在1.32.8版本魔兽争霸III中运行经典的1.24.4地图时&…...
R Markdown网站生成器使用教程:如何快速搭建技术文档网站 [特殊字符]
R Markdown网站生成器使用教程:如何快速搭建技术文档网站 📊 【免费下载链接】rmarkdown Dynamic Documents for R 项目地址: https://gitcode.com/gh_mirrors/rm/rmarkdown R Markdown是一个强大的动态文档生成工具,能够将代码、输出…...
「码动四季·开源同行」go语言:统一认证与授权如何保障服务安全
认证与授权对于当前的互联网应用是非常重要的基础功能:认证用于验证当前用户的身份,而授权意味着用户在认证成功后,会被系统授予访问系统资源的权限。只有具备相应身份和权限的人才能访问系统中的相应资源,比如在购物网站中你只能…...
忍者像素绘卷微信小程序集成指南:轻量API调用与像素输出适配
忍者像素绘卷微信小程序集成指南:轻量API调用与像素输出适配 1. 项目概述与核心价值 忍者像素绘卷是一款基于Z-Image-Turbo深度优化的图像生成工具,专为16-Bit复古游戏美学风格设计。它通过轻量级API服务,让开发者能够快速将像素艺术生成能…...
