资源简介
java ffmpeg实现视屏剪辑、srt字幕嵌入、视频合成、图片转视频
通过test类运行。demo基于jave的源码。对ffmpeg的两种系统下的执行文件进行了替换。所以ffmpeg版本是最新的。可以执行ffmpeg官网上大多数的命令
代码片段和文件信息
package com.epoint.ga.demo.ffmpeg;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.linkedList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.log4j.Logger;
import com.epoint.core.utils.string.StringUtil;
import it.sauronsoftware.jave.DefaultFFMPEGLocator;
/**
* 主要封装了对音视频处理的命令执行
* @author guosc
*
*/
public class MediaUtil
{
private static String FFMPEG_PATH;
private static boolean isWin = false;
private final static Logger log = Logger.getLogger(MediaUtil.class);
/**
* 初始化时利用反射获取jave-1.0.1.jar中FFmpeg.exe的路径
* 利用jave-1.0.1.jar来避免本地安装FFmpeg.exe
*/
static {
DefaultFFMPEGLocator locator = new DefaultFFMPEGLocator();
try {
Method method = locator.getClass().getDeclaredMethod(“getFFMPEGExecutablePath“);
method.setAccessible(true);
FFMPEG_PATH = (String) method.invoke(locator);
method.setAccessible(false);
isWin = System.getProperty(“os.name“).toLowerCase().indexOf(“windows“) != -1;
log.info(“--- 获取FFmpeg可执行路径成功 --- 路径信息为:“ + FFMPEG_PATH);
log.info(“--- 系统是否为windows --- “ + isWin);
}
catch (Exception e) {
log.error(“--- 获取FFmpeg可执行路径失败! --- 错误信息: “ + e.getMessage());
}
}
/**
* 获取FFmpeg程序的路径(windows和linux环境下路径不一样)
*
* @return
*/
public static String getFFmpegPath() {
return FFMPEG_PATH;
}
public static String getWidthAndHeight(String mp4Path) {
List commonds = new ArrayList<>();
commonds.add(“-i“);
commonds.add(“\““ + mp4Path + “\““);
String result = executeCommand(commonds);
Pattern p3 = Pattern.compile(“(\\d{23})x(\\d{23})“);
Matcher m = p3.matcher(result);
String wh = ““;
if (m.find()) {
wh = m.group(1) + ““ + m.group(2);
}
return wh;
}
/**
* MP4嵌入字幕
* @param mp4Path
* @param tempFloderPath
* @param targetMp4Path
* @param srtParts
* @return
*/
public static String addSrt2Mp4(String mp4Path String tempFloderPath String targetMp4Path List srtParts) {
//ffmpeg -y -i file1.mp4 -vf subtitles=file1.srt file1zimu.mp4
//需要生成缓存文件srt
if (mp4Path == null || StringUtil.isBlank(tempFloderPath)) {
throw new RuntimeException(“参数不对“);
}
if (!tempFloderPath.endsWith(File.separator)) {
tempFloderPath += File.separator;
}
//计算视频宽高
String wh = getWidthAndHeight(mp4Path);
in
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 15866 2020-05-15 18:15 java\com\epoint\ga\demo\ffmpeg\MediaUtil.java
文件 1090 2020-05-15 16:42 java\com\epoint\ga\demo\ffmpeg\SrtPart.java
文件 3835 2020-05-15 18:05 java\com\epoint\ga\demo\ffmpeg\SrtUtil.java
文件 2832 2020-05-15 17:35 java\com\epoint\ga\demo\ffmpeg\Test.java
文件 4760 2020-05-14 17:06 java\com\epoint\ga\demo\ryrtc\RyRtcAction.java
文件 999 2020-04-21 16:47 java\com\epoint\ga\demo\server\PExchangeServerV7.java
文件 3102 2020-04-21 15:37 java\com\epoint\ga\demo\server\PRestServerInterfaceV7.java
文件 5139 2020-05-15 09:51 java\it\sauronsoftware\jave\AudioAttributes.java
文件 3460 2020-05-15 09:51 java\it\sauronsoftware\jave\AudioInfo.java
文件 4659 2020-05-15 10:24 java\it\sauronsoftware\jave\DefaultFFMPEGLocator.java
文件 38915 2020-05-15 17:17 java\it\sauronsoftware\jave\Encoder.java
文件 1262 2020-05-15 09:51 java\it\sauronsoftware\jave\EncoderException.java
文件 1804 2020-05-15 09:51 java\it\sauronsoftware\jave\EncoderProgressListener.java
文件 5546 2020-05-15 09:51 java\it\sauronsoftware\jave\EncodingAttributes.java
文件 40687412 2020-05-15 10:13 java\it\sauronsoftware\jave\ffmpeg
文件 67973632 2020-05-15 10:30 java\it\sauronsoftware\jave\ffmpeg.exe
文件 4517 2020-05-15 09:51 java\it\sauronsoftware\jave\FFMPEGExecutor.java
文件 1614 2020-05-15 09:51 java\it\sauronsoftware\jave\FFMPEGLocator.java
文件 1182 2020-05-15 09:51 java\it\sauronsoftware\jave\InputFormatException.java
文件 3405 2020-05-15 09:51 java\it\sauronsoftware\jave\MultimediaInfo.java
文件 1374 2020-05-15 09:51 java\it\sauronsoftware\jave\ProcessKiller.java
文件 88379 2020-05-15 10:24 java\it\sauronsoftware\jave\pthreadGC2.dll
文件 2039 2020-05-15 09:51 java\it\sauronsoftware\jave\RBufferedReader.java
文件 4721 2020-05-15 09:51 java\it\sauronsoftware\jave\VideoAttributes.java
文件 3136 2020-05-15 09:51 java\it\sauronsoftware\jave\VideoInfo.java
文件 1827 2020-05-15 09:51 java\it\sauronsoftware\jave\VideoSize.java
目录 0 2020-05-15 14:31 java\com\epoint\ga\demo\ffmpeg
目录 0 2020-04-15 10:37 java\com\epoint\ga\demo\ryrtc
目录 0 2020-04-21 15:36 java\com\epoint\ga\demo\server
目录 0 2020-05-14 08:13 java\com\epoint\ga\demo\util
............此处省略11个文件信息
- 上一篇:PD4ML 依赖jar包284265
- 下一篇:坐标数据转换为图形
相关资源
- 坐标数据转换为图形
- java编程逻辑
- 在linux环境下通过java代码操作串口,
- 计算机科学与技术专业本科毕业论文
- java课设报告
- 黑马乐优18年11月份 java最新资料 包含
- JAVA在SQLite嵌入式数据库中的应用.ra
- java图书管理系统源码,实现增删改查
- 学籍管理系统java版
- 基于WEB的IT电脑购物系统的设计与实现
- 基于WEB的农产品销售管理系统.rar
- [Java源码]基于Swing和SpringBoot的人事管
- java黑马学习笔记
- xincs心理测试测评系统.zip
- 深入体验JAVA项目开发
- 基于java的小区外来人员管理系统的设
- 基于java的客户关系管理系统的设计与
- JavaWeb后端代码自动生成工具
- Java中通过HanLP实现文本分词、提取关
- 毕设-在线考试系统.zip
- 基于ssm图书信息管理系统javaweb计算机
- java + vue 的前后端分离的考试系统.r
- JavaEE课程设计全套.zip
- 基于JavaWeb的网络考试系统的设计与实
- 蓝桥杯练习系统试题及答案 JAVA版真题
- 基于Web的影院在线订票系统的设计与
- java项目实训实现的仙剑奇侠传游戏
- 服务器搭建:servlet+dao+javabean+jsp实现
- Javaweb实现的优优图书商城源码
- 基于java、mysql的网上在线商城系统
评论
共有 条评论