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

ffmpeg的部署踩坑及简单使用方式

ffmpeg的使用方式有以下几种:

使用原生安装包

直接在ffmpeg官网上下载安装该软件,加入到环境变量中就可以使用了

优点:简单,灵活,代码中也不用添加其他第三方的包

缺点:需要手动安装ffmpeg,这点比较麻烦

部署-windows

在windows环境下,有时就算加入到了环境变量,在程序中依然有可能会报错找不到ffmpeg.exe文件,此时可以直接在配置文件中指定脚本路径,CmdHandleConfig

@ConfigurationProperties(prefix = "cmd-handle")
@Component
@Data
public class CmdHandleConfig {/*** ffmpeg的路径*/private String ffmpegPath;
}
public static String getFfmpegPath() {CmdHandleConfig cmdHandleConfig = SpringUtil.getBean(CmdHandleConfig.class);if (StringUtils.hasText(cmdHandleConfig.getFfmpegPath())) {return cmdHandleConfig.getFfmpegPath();}OsInfo osInfo = SystemUtil.getOsInfo();String suffix = osInfo.isWindows() ? ".exe" : (osInfo.isMac() ? "-osx" : "");return "ffmpeg" + suffix;
}

说明:方法中使用的都是hutool的工具包;windows中的执行脚本是ffmpeg.exe,linux上是ffmpeg
在linux上手动获取脚本路径,可使用以下命令:

which ffmpeg
部署-linux

在linux上部署分为两种情况,直接使用宿主机环境安装和使用docker安装

宿主机安装

添加源并安装,这种装好的ffmpeg命令是已经自动加到了环境变量,不需要自己再手动添加

echo > /etc/apt/sources.list
echo  "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free" >/etc/apt/sources.list
echo  "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free" >>/etc/apt/sources.list
echo  "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free" >>/etc/apt/sources.list
echo  "deb http://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free" >>/etc/apt/sources.list
apt-get -y update && apt-get install -y ffmpeg
docker安装
  1. 如果是在Dockerfile中使用RUN命令在容器中安装,apt-get update命令会缺少源,就算在sources.list文件中添加了源也会失败,这里我不知道怎么解决,所以我采用的是第二种方式
  2. From一个基础镜像并run一个容器,在运行的容器中执行宿主机安装所使用的命令,添加源并进行安装即可,最后构建成自己的一个基础镜像。我自己也写了一个脚本用来构建ffmpeg的镜像,亲测是可以的。可以在资源

相关文章:

  • Linux排查问题常用命令
  • C语言详解(文件操作)1
  • ARM的异常处理
  • Android 上展示 GIF 动图的方法
  • Stable Diffusion 3 Medium 模型
  • Python 机器学习 基础 之 【常用机器学习库】 scikit-learn 机器学习库
  • UnityAPI学习之延时调用(Invoke)
  • vscode中模糊搜索和替换
  • 如何使用asyncua模块在opcua的Server端添加值为列表的变量?
  • Office 2021 mac/win版:智慧升级,办公新风尚
  • 【大数据】计算引擎:Spark核心概念
  • L50--- 104. 二叉树的最大深度(深搜)---Java版
  • windows11 建立批处理bat文件来删除指定目录下的所有隐藏的文件。
  • mysql_ssl_rsa_setup使用详解
  • 【Mysql】 深入理解MySQL的执行计划
  • 2017-08-04 前端日报
  • Centos6.8 使用rpm安装mysql5.7
  • CSS实用技巧
  • Java程序员幽默爆笑锦集
  • jquery cookie
  • PHP 7 修改了什么呢 -- 2
  • python学习笔记 - ThreadLocal
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 动态魔术使用DBMS_SQL
  • 仿天猫超市收藏抛物线动画工具库
  • 将 Measurements 和 Units 应用到物理学
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 如何用vue打造一个移动端音乐播放器
  • 我的面试准备过程--容器(更新中)
  • 我看到的前端
  • 小程序button引导用户授权
  • 优化 Vue 项目编译文件大小
  • 再次简单明了总结flex布局,一看就懂...
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • Spring第一个helloWorld
  • 组复制官方翻译九、Group Replication Technical Details
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​queue --- 一个同步的队列类​
  • ​卜东波研究员:高观点下的少儿计算思维
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • ### RabbitMQ五种工作模式:
  • #laravel 通过手动安装依赖PHPExcel#
  • #QT(智能家居界面-界面切换)
  • #每日一题合集#牛客JZ23-JZ33
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (3)llvm ir转换过程
  • (day 12)JavaScript学习笔记(数组3)
  • (python)数据结构---字典
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (附源码)c#+winform实现远程开机(广域网可用)
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (十七)、Mac 安装k8s
  • **CI中自动类加载的用法总结
  • .bat批处理(三):变量声明、设置、拼接、截取