java 实现视频转换通用工具类:视频截图-Ffmpeg(四)
java 实现视频转换通用工具类:获取视频元数据信息(一)
java 实现视频转换通用工具类:视频相互转换-Ffmpeg(三)
1.ffmpeg 截图,自定义命令行
- /**
- * ffmpeg 截图,自定义命令行
- * @param srcVideoPath 源文件
- * @param shellLine 自定义shell命令行
- * @param tarImagePath 目标文件
- * @return
- */
- public static boolean processFfmpegImage(String srcVideoPath,String shellLine,String tarImagePath) {
- if (!checkfile(srcVideoPath)) {
- logger.error("【" + srcVideoPath + "】 不存在 !");
- return false;
- }
- List<String> commend = new java.util.ArrayList<String>();
- commend.add(ffmpegPath);
- commend.add("-i");
- commend.add(srcVideoPath);
- commend.add(shellLine);
- commend.add(tarImagePath);
- try {
- ProcessBuilder builder = new ProcessBuilder();
- builder.command(commend);
- Process process = builder.start();
- InputStream is = process.getErrorStream();
- InputStreamReader inputStreamReader = new InputStreamReader(is);
- BufferedReader inputBufferedReader = new BufferedReader(
- inputStreamReader);
- String line = null;
- StringBuilder stringBuilder = new StringBuilder();
- while ((line = inputBufferedReader.readLine()) != null) {
- stringBuilder.append(line);
- }
- inputBufferedReader.close();
- inputBufferedReader = null;
- inputStreamReader.close();
- inputStreamReader = null;
- is.close();
- is = null;
- if (!checkfile(tarImagePath)) {
- logger.info(tarImagePath + " is not exit! processFfmpegImage 转换不成功 !");
- return false;
- }
- return true;
- } catch (Exception e) {
- logger.error("【" + srcVideoPath + "】 processFfmpegImage 转换不成功 !");
- return false;
- }
- }
2.ffmpeg 截图,并指定图片的大小
- /**
- * ffmpeg 截图,并指定图片的大小
- * @param srcVideoPath
- * @param tarImagePath 截取后图片路径
- * @param width 截图的宽
- * @param hight 截图的高
- * @param offsetValue 表示相对于文件开始处的时间偏移值 可以是分秒
- * @param vframes 表示截图的桢数
- *
- * @return
- */
- public static boolean processFfmpegImage(String srcVideoPath,String tarImagePath,int width,int hight,float offsetValue,float vframes) {
- if (!checkfile(srcVideoPath)) {
- logger.error("【" + srcVideoPath + "】 不存在 !");
- return false;
- }
- List<String> commend = new java.util.ArrayList<String>();
- commend.add(ffmpegPath);
- commend.add("-i");
- commend.add(srcVideoPath);
- commend.add("-y");
- commend.add("-f");
- commend.add("image2");
- commend.add("-ss");
- commend.add(offsetValue+""); //在视频的某个插入时间截图,例子为5秒后
- commend.add("-vframes");
- commend.add(vframes + ""); //截图的桢数
- commend.add("-s");
- commend.add(width + "x" +hight); //截图的的大小
- commend.add(tarImagePath);
- try {
- ProcessBuilder builder = new ProcessBuilder();
- builder.command(commend);
- Process process = builder.start();
- doWaitFor(process);
- process.destroy();
- if (!checkfile(tarImagePath)) {
- logger.info(tarImagePath + " is not exit! processFfmpegImage 转换不成功 !");
- return false;
- }
- return true;
- } catch (Exception e) {
- logger.error("【" + srcVideoPath + "】 processFfmpegImage 转换不成功 !");
- return false;
- }
- }
java 实现视频转换通用工具类:视频截图-Ffmpeg(四)的更多相关文章
- java 实现视频转换通用工具类:视频相互转换-Ffmpeg(三)
java 实现视频转换通用工具类:获取视频元数据信息(一) java 实现视频转换通用工具类:视频相互转换-总方法及Mencoder(二) 这节主要是ffmpeg的相关方法封装,在实际调用中主要使用f ...
- java 实现视频转换通用工具类:视频相互转换-总方法及Mencoder(二)
1.自动判断格式并调用相应的转换工具,默认方法 /** * 自动判断格式并调用相应的转换工具,默认方法 * @param srcVideoPath * @param tarVideoPath * @r ...
- java 实现视频转换通用工具类:获取视频元数据信息(一)
java 做视频转换主要用到开源的ffmpeg或者mencoder,还要有MP4Box. 注:由于平时都没有时间写博客,所以思路我就不写了,有问题问我,不一定马上回复. 详细介绍: ffmpeg:ht ...
- C#调用mmpeg进行各种视频转换的类实例
本文实例讲述了C#调用mmpeg进行各种视频转换的类.分享给大家供大家参考.具体如下: 这个C#类封装了视频转换所需的各种方法,基本上是围绕着如何通过mmpeg工具来进行视频转换 using Syst ...
- 在java poi导入Excel通用工具类示例详解
转: 在java poi导入Excel通用工具类示例详解 更新时间:2017年09月10日 14:21:36 作者:daochuwenziyao 我要评论 这篇文章主要给大家介绍了关于在j ...
- java 二进制数字符串转换工具类
java 二进制数字符串转换工具类 将二进制转换成八进制 将二进制转换成十进制 将二进制转换成十六进制 将十进制转换成二进制 package com.iteye.injavawetrust.ad; i ...
- C# 利用ffmpeg 对视频转换系类操作 (1) 基本分析
最近公司做一个项目,开发一个视频站点.项目需求中有很多视频转换的需求,如:格式转换(flv,Mp4),视频水印,视频截图,视频合成,获取视频的基本信息(时间戳,视频大小等).经过网络的收集资料以及自己 ...
- [视频转换] C#VideoConvert视频转换帮助类 (转载)
点击下载 VideoConvert.zip 主要功能如下 .获取文件的名字 .获取文件扩展名 .获取文件类型 .视频格式转为Flv .生成Flv视频的缩略图 .转换文件并保存在指定文件夹下 .转换文件 ...
- JAVA字符串编码转换常用类
无论是对程序的本地化还是国际化,都会涉及到字符编码的转换的问题.尤其在web应用中常常需要处理中文字符,这时就需要进行字符串的编码转换,将字符串编码转换为GBK或者GB2312.一.关键技术点: ...
随机推荐
- 隐马尔科夫模型 介绍 HMM python代码
#HMM Forward algorithm #input Matrix A,B vector pi import numpy as np A=np.array([[0.5,0.2,0.3],[0.3 ...
- init进程解析rc文件的相关函数分析
init进程的源码文件位于system/core/init,其中解析rc文件语法的代码放在五个函数中, init_parse_config_file (init_parser.c), read_fil ...
- 微信5.4 AndroidManifest.xml
<?xml version="1.0" encoding="utf-8" ?> - <manifest android:versionCode ...
- 摄像头(5)使用Camera2 替代过时的Camera API
转自: http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0428/2811.html 概要 从5.0开始(API Level 21 ...
- 工具----IcoFX
IcoFX IcoFX 是一款免费的图标编辑工具,让您轻松创建 Windows XP 和 Windows Vista 图标. 在编辑区您可以轻松的预览.保存.更改您的图标.您可以将您喜欢的图像转换为图 ...
- 8 Things Every Person Should Do Before 8 A.M.
https://medium.com/@benjaminhardy/8-things-every-person-should-do-before-8-a-m-cc0233e15c8d 1. Get A ...
- poj2886Who Gets the Most Candies? (约瑟夫环)
http://poj.org/problem?id=2886 单点更新 初始位置都是1 如果这个人出去 位置变为0 利用线段树求区间k值 k值的计算如下 如果这个数值是负的 那么下一个人的就是((k- ...
- uva11082 Matrix Decompressing
网络流 首先算出每行每列的数的和. 每行的值减去c,每列的值减去R 然后每行和每列之间连边,容量为19. 这样一来,(i,j)的流量相当于(i,j)的值-1. 这样就避免了流量为0不对应答案的尴尬情况 ...
- POJ 2398 Toy Storage
这道题和POJ 2318几乎是一样的. 区别就是输入中坐标不给排序了,=_=|| 输出变成了,有多少个区域中有t个点. #include <cstdio> #include <cma ...
- web旋转式
为了获取客户.回馈客户,平台一般会推出抽奖活动类的营销页.因此web页面中,有各式各样的抽奖效果. 格子式(九宫格),背景滚动式(数字/文字/图案),旋转式(转盘),游戏式(砸蛋/拼图...).... ...