Java 跨平台多媒体处理样例
代码
import cn.hutool.core.exceptions.ExceptionUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.CharsetUtil;
import lombok.extern.slf4j.Slf4j;
import ws.schild.jave.Encoder;
import ws.schild.jave.MultimediaObject;
import ws.schild.jave.encode.AudioAttributes;
import ws.schild.jave.encode.EncodingAttributes;
import ws.schild.jave.process.ProcessWrapper;
import ws.schild.jave.process.ffmpeg.DefaultFFMPEGLocator;import java.io.File;
import java.io.InputStream;/*** 多媒体文件处理工具包*/
@Slf4j
public class FfmpegUtil {/*** mp4转mp3** @param src 源文件* @param dest 目标文件*/public static void mp4ToMp3(String src, String dest) {FileUtil.writeUtf8String("", dest);File fileMp4 = new File(src);File fileMp3 = new File(dest);AudioAttributes audio = new AudioAttributes();EncodingAttributes attrs = new EncodingAttributes();attrs.setOutputFormat("mp3");attrs.setAudioAttributes(audio);Encoder encoder = new Encoder();MultimediaObject mediaObject = new MultimediaObject(fileMp4);try {encoder.encode(mediaObject, fileMp3, attrs);} catch (Exception e) {log.error(ExceptionUtil.stacktraceToString(e));}}/*** 获取第一帧*/public static void firstFrame(String src, String dest) {FileUtil.writeUtf8String("", dest);ProcessWrapper ffmpeg = new DefaultFFMPEGLocator().createExecutor();try {ffmpeg.addArgument("-i");ffmpeg.addArgument(src);ffmpeg.addArgument("-y");ffmpeg.addArgument("-ss");// 此处可自定义视频的秒数ffmpeg.addArgument("1");ffmpeg.addArgument("-vframes");ffmpeg.addArgument("1");ffmpeg.addArgument(dest);ffmpeg.execute();InputStream errorStream = ffmpeg.getErrorStream();String read = IoUtil.read(errorStream, CharsetUtil.UTF_8);System.out.println(read);} catch (Exception e) {log.error(ExceptionUtil.stacktraceToString(e));} finally {ffmpeg.close();}}
}
依赖
<!--hutool工具包--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.15</version></dependency><!--java多媒体处理工具包--><dependency><groupId>ws.schild</groupId><artifactId>jave-all-deps</artifactId><version>3.2.0</version></dependency>
相关文章:
Java 跨平台多媒体处理样例
代码 import cn.hutool.core.exceptions.ExceptionUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.CharsetUtil; import lombok.extern.slf4j.Slf4j; import ws.schild.jave.Encoder; import ws.schild.jave.Multime…...
cmake基础(3)——安装
一、简介 install命令用于指定安装时的规则,由于安装命令比较复杂,这里做一部分内容的介绍,后续用到再继续完善。 1.命令简介 本文档基于3.20,目前有6种安装方式。 install(TARGETS <target>... [...]) install({FILES …...
LeetCode解法汇总1572. 矩阵对角线元素的和
目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 描述: 给你一个正…...
BFC(Block formatting context 块级格式化上下文)
1、开启了BFC能解决什么问题? 给父元素开启BFC,其子元素不会再产生 margin 塌陷问题。自己不会被其他浮动元素所覆盖。就算其子元素浮动,元素自身高度也不会塌陷。 2、如何开启? 根元素浮动元素绝对定位、固定定位的元素行内块…...
Leetcode-每日一题【剑指 Offer 14- II. 剪绳子 II】
题目 2、3、3的三段,此时得到的最大乘积是18。 答案需要取模 1e97(1000000007),如计算初始结果为:1000000008,请返回 1。 示例 1: 输入: 2输出: 1解释: 2 1 1, 1 1 1 示例 2: 输入: 10输出…...
bye 我的博客网站
Bye🙋🙋🙋,我的博客网站。在我的服务器上运行了9个月之久的博客网站要和大家Bye了。 背景 可能很多人不知道我的这个博客网站的存在,好吧,最后一次展示它了,博客网站地址在这里,它…...
Llama 2:开放基础和微调聊天模型
介绍 大型语言模型(llm)作为高能力的人工智能助手,在复杂的推理任务中表现出色,这些任务需要广泛领域的专家知识,包括编程和创意写作等专业领域。它们可以通过直观的聊天界面与人类进行交互,这在公众中得到了迅速而广泛的采用。 法学硕士的能力是显著的考虑到训练的表面上…...
JVM工作的总体机制概述
JDK、JRE、JVM关系回顾 JVM:Java Virtual Machine,翻译过来是Java虚拟机JRE:Java Runtime Environment,翻译过来是Java运行时环境 JREJVMJava程序运行时所需要的类库JDK:Java Development Kits,翻译过来是…...
jmeter工具测试和压测websocket协议【杭州多测师_王sir】
一、安装JDK配置好环境变量,安装好jmeter 二、下载WebSocketSampler发送请求用的,地址:https://bitbucket.org/pjtr/jmeter-websocket-samplers/downloads/?spma2c4g.11186623.2.15.363f211bH03KeI 下载解压后的jar包放到D:\JMeter\apache-j…...
国产漏洞扫描器Xray入门,详细教程
国产漏洞扫描器Xray入门,详细教程 1.Xray简介2.快速开始3.使用 xray 代理模式进行漏洞扫描4.使用 xray 基础爬虫模式进行漏洞扫描5.使用 xray 进行服务扫描1.Xray简介 xray 是一款功能强大的安全评估工具,由多名经验丰富的一线安全从业者呕心打造而成,主要特性有: 检测速度…...
LeetCode209. 长度最小的子数组
题目:LeetCode209. 长度最小的子数组 描述: 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子…...
css冒号对齐
实现后的样式效果 实现方式 html: <el-col v-if"item.showInSingle ! false" :span"6" style"padding: 4px 0"><label>{{ item.label }}:</label><span v-if"singleData[item.prop] ! 0 &…...
那些年的golang开发经验记录
goland 问题CreateProcess error216, 该版本的 %1 与你运行的 Windows 版本不兼容。请查看计算机的系统信息,然后联系软件发布者 Cannot run program "......" (in directory "D:\project\go\awesomeProject\src\test"): CreateProcess error2…...
element中select下拉框如何实现宽度自适应
简单暴力: element 和 elementPlus 都可以直接在el-select上添加 style"width: 100%" 解决 <el-select style"width: 100%" v-model"cats" multiple filterable placeholder"请选择分类"> . . . </el-select&…...
springboot项目get请求下划线转驼峰@JsonProperty注解失效问题
问题:解决sprigboot项目get请求中有下划线的入参参数,如:first_name,希望在项目中将下划线格式转成firstName,用JsonProperty注解发现失效问题 1.核查:JsonProperty注解对应包是否正确 正确包:…...
架构训练营学习笔记:6-2 微服务基础选型
基础选型 微服务基础设施架构 优先级 其中,核心 就是服务注册、服务发现、服务路由。 模式1-嵌入SDK 模式2-反向代理式 模式3-网络代理式(Service Mesh) 模式对比 常见微服务框架选择 嵌入SDK-dubbo Spring Cloud 反向代理式 APISIX …...
opencv实战项目 实现手势跟踪并返回位置信息(封装调用)
OpenCV 是一个基于 Apache2.0 许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 需要提前准备opencv 和 mediapipe库 pip --default-timeout5000 install -i https://pypi.tuna.tsi…...
ElementUI动态添加表单项
昨天感冒发烧了,脑子不好使。在实现这个动态表单项时一直报错脑瓜子嗡嗡的! 不过好在昨天休息好了,今天起来趁脑瓜子好使,一会就弄好了。 这里记录一下 <el-form-itemv-for"(classId,index) in addFom.classIds":lab…...
Myatis和MybatisPlus常见分页方式
Myatis和MybatisPlus常见分页方式 一、mybaits 原生limit分页 SELECT * FROM order_info limit #{pageNow},#{pageSize}分页插件(ssm中,通过xml配置分页。springboot通过则通过配置文件) PageHelper插件:PageHelper.startPage(…...
利用ChatGPT绘制思维导图——以新能源汽车竞品分析报告为例
随着人们对环境保护的日益关注和传统燃油汽车的限制,全球范围内对新能源汽车的需求不断增长。新能源汽车市场的激烈竞争使得了解各个竞品的特点和优劣成为关键。然而,针对这一领域的详尽竞品分析却常常需要大量时间和精力。 在此背景下,人工智…...
Paperxie AI PPT 生成器:毕业答辩 PPT 的 “懒人救星”,让你告别熬夜改模板
paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPThttps://www.paperxie.cn/ppt/createhttps://www.paperxie.cn/ppt/create 毕业答辩季的深夜,多少人的电脑里还躺着一份半成品 PPT?模板找不到、排版乱成一团、内容提炼不精准、…...
国产MCU替代STM32,别只看引脚兼容,这三个坑你得知道
说起来,国产MCU替代STM32这事儿,这几年是真的火。芯片缺货、供应链安全、成本控制……各种原因让越来越多的工程师开始考虑或者已经在用国产方案了。引脚兼容,这个词大家肯定不陌生。很多国产MCU厂商在推广的时候,最喜欢强调的就是…...
别死磕 Prompt 了:把 RAG 检索准确率拉满的 4 层工程架构拆解
在做 RAG(检索增强生成)系统时,很多新手最喜欢干的事就是天天调 LLM 的 Prompt:“你是一个资深专家……”、“请仔细阅读……” 调了半天,发现一旦问点偏门的问题,大模型还是在胡说八道。为什么?…...
2026浏览器指纹对抗技术演进史与未来十年发展路径预判
一、引言从互联网商业化普及开始,用户设备识别与隐私保护的技术博弈就从未停止。浏览器指纹技术凭借高唯一性、不可清除、隐蔽性强的特点,逐步取代传统 Cookie,成为互联网平台设备识别、用户追踪、风控管控的核心技术。与之对应的,…...
Horos:基于LGPL-3.0的开源医疗影像平台技术架构深度解析
Horos:基于LGPL-3.0的开源医疗影像平台技术架构深度解析 【免费下载链接】horos Horos™ is a free, open source medical image viewer. The goal of the Horos Project is to develop a fully functional, 64-bit medical image viewer for OS X. Horos is based …...
数据结构--散列函数的构造方法
一、概述散列(哈希)函数的作用:将任意整数型 / 字符型关键字,通过固定运算,压缩映射为 0~表长 - 1 范围内的散列地址。构造原则(必背): 计算简单、速度快; 地…...
别再只会用top了!这5个Linux内存监控命令,帮你快速定位服务器卡顿元凶
深度剖析Linux内存监控:5个高阶命令解决服务器卡顿难题 当服务器突然响应迟缓,终端操作卡顿得像老式打字机,大多数工程师的第一反应是打开top命令。这个经典工具确实能提供基础的系统负载概览,但就像用体温计诊断复杂疾病一样&am…...
1 7.2 网卡的设置
🔥个人主页:杨利杰YJlio❄️个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》 《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更…...
AI视频字幕去除技术革命:3分钟掌握专业级硬字幕清理方案
AI视频字幕去除技术革命:3分钟掌握专业级硬字幕清理方案 【免费下载链接】video-subtitle-remover 基于AI的图片/视频硬字幕去除、文本水印去除,无损分辨率生成去字幕、去水印后的图片/视频文件。无需申请第三方API,本地实现。AI-based tool …...
频谱仪进阶功能完全指南:从窄脉冲测量到非线性测试
这不是一篇入门帖。如果你已经会看谱线、会测功率,但对窄脉冲该怎么测、相位噪声的底噪从哪来、TOI 和 ACPR 之间是什么关系仍存疑问,这篇文章就是为你准备的。全文聚焦于频谱仪的进阶功能——即从脉冲测量、Zero Span、相位噪声、噪声系数,到非线性测试与通信指标的综合应用…...
