java ffmpeg实现视屏剪辑、srt字幕嵌入、视频合成、图片转视频
java ffmpeg实现视屏剪辑、srt字幕嵌入、视频合成、图片转视频
通过test类运行。demo基于jave的源码。对ffmpeg的两种系统下的执行文件进行了替换。所以ffmpeg版本是最新的。可以执行ffmpeg官网上大多数的命令
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 15866 2020-05-15 18:15 javacomepointgademoffmpegMediaUtil.java
文件 1090 2020-05-15 16:42 javacomepointgademoffmpegSrtPart.java
文件 3835 2020-05-15 18:05 javacomepointgademoffmpegSrtUtil.java
文件 2832 2020-05-15 17:35 javacomepointgademoffmpegTest.java
文件 4760 2020-05-14 17:06 javacomepointgademo
yrtcRyRtcAction.java
文件 999 2020-04-21 16:47 javacomepointgademoserverPExchangeServerV7.java
文件 3102 2020-04-21 15:37 javacomepointgademoserverPRestServerInterfaceV7.java
文件 5139 2020-05-15 09:51 javaitsauronsoftwarejaveAudioAttributes.java
文件 3460 2020-05-15 09:51 javaitsauronsoftwarejaveAudioInfo.java
文件 4659 2020-05-15 10:24 javaitsauronsoftwarejaveDefaultFFMPEGLocator.java
文件 38915 2020-05-15 17:17 javaitsauronsoftwarejaveEncoder.java
文件 1262 2020-05-15 09:51 javaitsauronsoftwarejaveEncoderException.java
文件 1804 2020-05-15 09:51 javaitsauronsoftwarejaveEncoderProgressListener.java
文件 5546 2020-05-15 09:51 javaitsauronsoftwarejaveEncodingAttributes.java
文件 40687412 2020-05-15 10:13 javaitsauronsoftwarejaveffmpeg
文件 67973632 2020-05-15 10:30 javaitsauronsoftwarejaveffmpeg.exe
文件 4517 2020-05-15 09:51 javaitsauronsoftwarejaveFFMPEGExecutor.java
文件 1614 2020-05-15 09:51 javaitsauronsoftwarejaveFFMPEGLocator.java
文件 1182 2020-05-15 09:51 javaitsauronsoftwarejaveInputFormatException.java
文件 3405 2020-05-15 09:51 javaitsauronsoftwarejaveMultimediaInfo.java
文件 1374 2020-05-15 09:51 javaitsauronsoftwarejaveProcessKiller.java
文件 88379 2020-05-15 10:24 javaitsauronsoftwarejavepthreadGC2.dll
文件 2039 2020-05-15 09:51 javaitsauronsoftwarejaveRBufferedReader.java
文件 4721 2020-05-15 09:51 javaitsauronsoftwarejaveVideoAttributes.java
文件 3136 2020-05-15 09:51 javaitsauronsoftwarejaveVideoInfo.java
文件 1827 2020-05-15 09:51 javaitsauronsoftwarejaveVideoSize.java
目录 0 2020-05-15 14:31 javacomepointgademoffmpeg
目录 0 2020-04-15 10:37 javacomepointgademo
yrtc
目录 0 2020-04-21 15:36 javacomepointgademoserver
目录 0 2020-05-14 08:13 javacomepointgademoutil
............此处省略11个文件信息
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 javacomepointgademoffmpegMediaUtil.java
文件 1090 2020-05-15 16:42 javacomepointgademoffmpegSrtPart.java
文件 3835 2020-05-15 18:05 javacomepointgademoffmpegSrtUtil.java
文件 2832 2020-05-15 17:35 javacomepointgademoffmpegTest.java
文件 4760 2020-05-14 17:06 javacomepointgademo
yrtcRyRtcAction.java
文件 999 2020-04-21 16:47 javacomepointgademoserverPExchangeServerV7.java
文件 3102 2020-04-21 15:37 javacomepointgademoserverPRestServerInterfaceV7.java
文件 5139 2020-05-15 09:51 javaitsauronsoftwarejaveAudioAttributes.java
文件 3460 2020-05-15 09:51 javaitsauronsoftwarejaveAudioInfo.java
文件 4659 2020-05-15 10:24 javaitsauronsoftwarejaveDefaultFFMPEGLocator.java
文件 38915 2020-05-15 17:17 javaitsauronsoftwarejaveEncoder.java
文件 1262 2020-05-15 09:51 javaitsauronsoftwarejaveEncoderException.java
文件 1804 2020-05-15 09:51 javaitsauronsoftwarejaveEncoderProgressListener.java
文件 5546 2020-05-15 09:51 javaitsauronsoftwarejaveEncodingAttributes.java
文件 40687412 2020-05-15 10:13 javaitsauronsoftwarejaveffmpeg
文件 67973632 2020-05-15 10:30 javaitsauronsoftwarejaveffmpeg.exe
文件 4517 2020-05-15 09:51 javaitsauronsoftwarejaveFFMPEGExecutor.java
文件 1614 2020-05-15 09:51 javaitsauronsoftwarejaveFFMPEGLocator.java
文件 1182 2020-05-15 09:51 javaitsauronsoftwarejaveInputFormatException.java
文件 3405 2020-05-15 09:51 javaitsauronsoftwarejaveMultimediaInfo.java
文件 1374 2020-05-15 09:51 javaitsauronsoftwarejaveProcessKiller.java
文件 88379 2020-05-15 10:24 javaitsauronsoftwarejavepthreadGC2.dll
文件 2039 2020-05-15 09:51 javaitsauronsoftwarejaveRBufferedReader.java
文件 4721 2020-05-15 09:51 javaitsauronsoftwarejaveVideoAttributes.java
文件 3136 2020-05-15 09:51 javaitsauronsoftwarejaveVideoInfo.java
文件 1827 2020-05-15 09:51 javaitsauronsoftwarejaveVideoSize.java
目录 0 2020-05-15 14:31 javacomepointgademoffmpeg
目录 0 2020-04-15 10:37 javacomepointgademo
yrtc
目录 0 2020-04-21 15:36 javacomepointgademoserver
目录 0 2020-05-14 08:13 javacomepointgademoutil
............此处省略11个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)