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

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每日刷题&#xff08;四十二&#xff09; Leetcode—739.每日温度 单调栈实现思想 从右到左实现代码 class Solution { public:vector<int> dailyTemperatures(vector<int>& temperatures) {int n temperatures.size();stack<int> st;vector<i…...

毕业设计单片机可以用万能板吗?

毕业设计单片机可以用万能板吗? 可以是可以&#xff0c;就是焊接起来比较麻烦&#xff0c;特别是有好几个重复连线点的时候&#xff0c;检测起来就不那么容易了&#xff0c;而且布线看起来乱糟糟的&#xff0c;如果后期一不小心把线弄断了&#xff0c;查起来就更麻烦了&#x…...

spring boot整合Jasypt实现配置加密

文章目录 目录 文章目录 前言 一、Jasypt是什么&#xff1f; 二、使用步骤 1.引入 2.测试使用 3.结果 总结 前言 一、Jasypt是什么&#xff1f; Jasypt&#xff08;Java Simplified Encryption&#xff09;是一个Java库&#xff0c;提供了一种简单的加密解密方式&#xff0c…...

java学校高校运动会报名信息管理系统springboot+jsp

课题研究方案&#xff1a; 结合用户的使用需求&#xff0c;本系统采用运用较为广泛的Java语言&#xff0c;springboot框架&#xff0c;HTML语言等关键技术&#xff0c;并在idea开发平台上设计与研发创业学院运动会管理系统。同时&#xff0c;使用MySQL数据库&#xff0c;设计实…...

Java(七)(Lambda表达式,正则表达式,集合(Collection,Collection的遍历方式))

目录 Lambda表达式 省略写法(要看懂) 正则表达式 语法 案例 正则表达式的搜索替换和分割内容 集合进阶 集合体系结构 Collection Collection的遍历方式 迭代器 增强for循环 Lambda表达式遍历Collection List集合 ArrayList LinkedList 哈希值 HashSet底层原理 …...

华为OD机试 - 二叉树计算(Java JS Python C)

目录 题目描述 输入描述 输出描述 用例 题目解析 JS算法源码 Java算法源码...

鸿蒙(HarmonyOS)应用开发——基础组件

组件 组件化是一种将复杂的前端应用程序分解成小的、独立的部分的方法。这些部分被称为组件&#xff0c;它们可以重复使用&#xff0c;可以与其他组件组合使用以创建更复杂的组件&#xff0c;并且它们有自己的生命周期和状态。 组件化的目的是提高开发效率和代码重用率&#…...

Vue3的项目创建到启动

Vue3的项目创建 检查node版本创建 npm init vuelatest 安装依赖 项目启动 启动成功...

开关电源基础而又硬核的知识

1.什么是Power Supply? Power Supply是一种提供电力能源的设备&#xff0c;它可以将一种电力能源形式转换成另外一种电力能源形式&#xff0c;并能对其进行控制和调节。 根据转换的形式分类&#xff1a;AC/DC、DC/DC、DC/AC、AC/AC 根据转换的方法分类&#xff1a;线性电源、…...

LightDB23.4 支持转换sql中中文空格和逗号为英文空格和逗号

功能介绍 在Lightdb数据库兼容Oracle的语法时&#xff0c;发现Oracle支持sql语句中使用中文空格和中文逗号&#xff0c;为了方便用户迁移到Lightdb&#xff0c;在Lightdb23.4版本中支持了转换中文空格和逗号的功能。该功能由GUC参数lightdb_convert_chinese_char来控制开关&am…...

EM@常见平面曲线的方程的不同表示方式

文章目录 abstract常见曲线的不同形式小结:一览表分析圆锥曲线的极坐标方程非标准位置的圆锥曲线参数方程应用比较 refs abstract 常见平面曲线的方程的不同表示方式 常见曲线的不同形式 下面以平面曲线为对象讨论参数方程通常是对普通方程的补充和增强,曲线的普通方程(直角…...

element使用小结

1、tabel表头文字自定义效果&#xff08;换行&#xff0c;不同颜色&#xff09; 换行&#xff1a; // 方法一 <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&#xff08;e&#xff09;SMU卡路由到PXI&#xff08;e&#xff09;机箱上的背板触发线。该过程涉及使用NI-DCPowerVI将SMU信号导出到PXI_TRIG线上。 在继续操作之前&#xff0c;请确保在开发PC上安装了兼容版…...

[蓝桥杯习题]———位运算、判断二进制1个数

⭐Hello!这里是欧_aita的博客。 ⭐今日语录&#xff1a;行动胜过一切。 ⭐个人主页&#xff1a;欧_aita ψ(._. )>⭐个人专栏&#xff1a; 数据结构与算法&#xff08;内含蓝桥杯习题&#xff09; MySQL数据库 位运算 位运算位运算的定义简单运用 实战刷题题目思路代码实现声…...

3DCAT为华东师大设计学院打造元宇宙数字虚拟学院

6月11日&#xff0c;华东师范大学设计学院在chi K11美术馆举办了一场别开生面的 2023 年本科毕业设计暨项目实践教学现场演示展。其中&#xff0c;元宇宙数字虚拟学院&#xff08;一期&#xff09;的现场发布会引起了现场震撼&#xff0c;吸引了众多观众的目光和参与。 该元宇宙…...

AIGC 3D即将爆发,混合显示成为产业数字化的生产力平台

2023年&#xff0c;大语言模型与生成式AI浪潮席卷全球&#xff0c;以文字和2D图像生成为代表的AIGC正在全面刷新产业数字化。而容易为市场所忽略的是&#xff0c;3D图像生成正在成为下一个AIGC风口&#xff0c;AIGC 3D宇宙即将爆发。所谓AIGC 3D宇宙&#xff0c;即由文本生成3D…...

王小川All in医疗大模型:从通用赛道抽身,“造AI医生”能否突围?

All in医疗有它的代价一年前&#xff0c;王小川带着百川智能大幅缩减通用模型团队&#xff0c;关闭多条行业线&#xff0c;All in医疗大模型。当时整个大模型行业热闹非凡&#xff0c;平均3天就有一个新版本的通用大模型面世。而百川在5月22日交出答卷&#xff0c;发布新医疗大…...

【Elasticsearch从入门到精通】第15篇:Elasticsearch删除与更新API——精确操作与脚本更新

上一篇【第14篇】Elasticsearch文档检索API——GET、MGet与字段选择 下一篇【第16篇】Elasticsearch批量操作API——Bulk、Reindex与跨集群索引 摘要 数据的删除和更新是Elasticsearch文档操作中不可或缺的环节。本文全面讲解了Elasticsearch删除与更新API的使用方法&#xff…...

初次使用Taotoken控制台管理账单与查看各模型消耗明细

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 初次使用Taotoken控制台管理账单与查看各模型消耗明细 对于刚开始使用大模型服务的开发者或团队而言&#xff0c;清晰、透明地掌握…...

5分钟快速上手:BepInEx游戏插件框架完全指南

5分钟快速上手&#xff1a;BepInEx游戏插件框架完全指南 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx是一款强大的游戏模组和插件框架&#xff0c;专门为Unity Mono、IL…...

5分钟掌握跨平台资源下载:res-downloader新手完整指南

5分钟掌握跨平台资源下载&#xff1a;res-downloader新手完整指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 你是否经常…...

华大半导体三大产品线深度解析:安全控制、汽车电子与功率芯片实战指南

1. 项目概述&#xff1a;一次关于“中国芯”的深度现场探访最近&#xff0c;我有机会近距离接触了华大半导体的产品展示与技术交流活动。当“聚焦三大产品线&#xff0c;华大半导体展示最强‘中国芯’&#xff01;”这个标题映入眼帘时&#xff0c;我内心的第一反应是&#xff…...

【限时解密】Claude 3.5尚未公布的思维缓存机制:如何用1行system prompt激活其人性推理开关?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;人性推理的本质&#xff1a;从认知科学视角重审LLM的“思维缓存” 人类在日常推理中并非每次从零启动逻辑链条&#xff0c;而是高度依赖情境化、片段化、可快速调用的心理表征——心理学家称之为“认知…...

机器人路径规划:安全性与最优性的平衡算法解析

1. 路径规划中的安全性与最优性平衡难题在机器人导航领域&#xff0c;路径规划算法始终面临一个核心矛盾&#xff1a;如何同时保证路径的最优性和安全性。传统A*算法追求最短路径&#xff0c;却常常让机器人贴着障碍物边缘行走&#xff1b;而基于Voronoi图的规划方法虽然能最大…...

3步解锁网易云音乐NCM加密文件:ncmdumpGUI终极转换指南

3步解锁网易云音乐NCM加密文件&#xff1a;ncmdumpGUI终极转换指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾在网易云音乐下载了心爱的歌曲&…...

Taotoken的模型广场如何辅助开发者进行技术选型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken的模型广场如何辅助开发者进行技术选型 对于需要集成大模型能力的开发者而言&#xff0c;面对市场上众多的模型提供商、复…...