Java截取视频第一帧
方法一:使用第三方jar包截取
1、导入依赖
<dependency><groupId>org.bytedeco</groupId><artifactId>javacv</artifactId><version>0.8</version></dependency>
2、示例
package com.zemel.video;import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;import javax.imageio.ImageIO;import org.bytedeco.javacpp.opencv_core.IplImage;
import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.Frame;public class Test {/*** 获取指定视频的帧并保存为图片至指定目录* @param videofile 源视频文件路径* @param framefile 截取帧的图片存放路径* @throws Exception*/public static void fetchFrame(String videofile, String framefile)throws Exception {long start = System.currentTimeMillis();File targetFile = new File(framefile);FFmpegFrameGrabber ff = new FFmpegFrameGrabber(videofile); ff.start();int lenght = ff.getLengthInFrames();int i = 0;Frame f = null;while (i < lenght) {// 过滤前5帧,避免出现全黑的图片,依自己情况而定f = ff.grabFrame();if ((i > 5) && (f.image != null)) {break;}i++;}IplImage img = f.image;int owidth = img.width();int oheight = img.height();// 对截取的帧进行等比例缩放int width = 800;int height = (int) (((double) width / owidth) * oheight);BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);bi.getGraphics().drawImage(f.image.getBufferedImage().getScaledInstance(width, height, Image.SCALE_SMOOTH),0, 0, null);ImageIO.write(bi, "jpg", targetFile);//ff.flush();ff.stop();System.out.println(System.currentTimeMillis() - start);}public static void main(String[] args) {try {Test.fetchFrame("D:\\biudata\\vedio\\1523598768844GFE2GWDDM8.mp4", "D:\\biudata\\vedio\\test5.jpg");} catch (Exception e) {e.printStackTrace();}}
}
方法二:使用ffmpeg
1、下载ffmpeg工具(http://ffmpeg.org/)
2、代码
public static boolean processImg(String veido_path, String ffmpeg_path) {File file = new File(veido_path);if (!file.exists()) {System.err.println("路径[" + veido_path + "]对应的视频文件不存在!");return false;}List<String> commands = new java.util.ArrayList<String>();commands.add(ffmpeg_path);commands.add("-i");commands.add(veido_path);commands.add("-y");commands.add("-f");commands.add("image2");commands.add("-ss");commands.add("8");// 这个参数是设置截取视频多少秒时的画面// commands.add("-t");// commands.add("0.001");commands.add("-s");commands.add("700x525");commands.add(veido_path.substring(0, veido_path.lastIndexOf(".")).replaceFirst("vedio", "file") + ".jpg");try {ProcessBuilder builder = new ProcessBuilder();builder.command(commands);builder.start();System.out.println("截取成功");return true;} catch (Exception e) {e.printStackTrace();return false;}}public static void main(String[] args) {processImg("D:\\biudata\\vedio\\15235879054813G0I1783E2.mp4","F:\\开发工具\\ffmpeg.exe");}
Java截取视频第一帧相关推荐
- php ffmpeg截图,php ffmpeg截取视频第一帧保存为图片的方法
php ffmpeg截取视频第一帧保存为图片的方法 $xiangmupath = $this->getxiangmupath(); $filename = 'chengshi'; $cmd = ...
- vue 截取视频第一帧
最近自己写项目,在项目中涉及功能点又截取视频帧的点:需求澄清:移动端封面展示,平台上传图片(多张上传)取第一张上传图片为封面图:如上传视频则截取视频第一帧作为封面图: 实现思路:h5 video标签 ...
- windows下PHP截取视频第一帧
php截取视频第一帧,需要配合第三方软件实现,php执行windowsShell命令,进行图片处理 首先下载第三方软件ffmpeg http://www.ffmpeg.org/download.htm ...
- java 取视频第一帧,java获取视频的第一帧
//------------maven配置文件--------------- org.bytedeco javacv 0.8 /** * 获取指定视频的帧并保存为图片至指定目录 * @param vi ...
- vue截取视频第一帧做封面图
利用画布canvas来截取第一帧作为图片 cutPicture(item) {let video = document.createElement("video");video.s ...
- java获取视频第一帧工具类
java获取视频文件第一帧,为了防止黑画面,此例取第五帧,本例子采用maven形式,可以获取视频的文件大小. 1. pom.xml 添加引用jar包 jdk采用1.8,日志自行添加即可,这里使用的是l ...
- PHP截取视频第一帧
安装ffmpeg 第一步:下载ffmpeg:http://ffmpeg.org/releases/ffmpeg-3.4.1.tar.gz wget http://www.ffmpeg.org/rele ...
- ffmpeg截取视频第一帧
public function getVideoCover($file_info, $time, $dir_video, $size, $dir) { try { $time = $time ? $t ...
- Linux环境java截取视频某帧另存缩略图
1.引入依赖 由于整包过大,这里仅引入功能相关的部分资源, <!-- 视频截图工具START --><dependency><groupId>org.bytedec ...
- 安卓截取视频第一帧的方法
视频app大多是需要有一张相关视频的图片做封面展示的.下面是可以直接从视频的url取到视频的第一帧图片的方法: Bitmap bitmap = ThumbnailUtils.createVideoTh ...
最新文章
- Android常见XML属性解析
- java 基本数据类型和包装类型
- 生命是一连串长期而持续的累积
- POJ1604 UVA568 UVALive5499 Just the Facts【模除+打表】
- 设计模式笔录(一),什么是设计模式
- 计算机班英语试卷考法,计算机专业英语期末考试试卷A
- kotlin转java_Kotlin 与 Java 代码之间的转换
- Photoshop插件-奥顿效果(梦幻柔焦)-脚本开发-PS插件
- Rocksdb 的compaction_filter和table_properties_collector 用法 及 其底层实现
- 数据分析(入门篇)-第三章-Show出你的数据-Part2(水晶易表)
- html base64在线解码,HTML5原生支持Base64编码解码
- 【Git】使用git上传代码到gitee
- 解决问题最简单的方法
- 珠海拱北口岸停车攻略,拱北口岸地下停车场收费
- 使用vxe-table 制作编辑表格
- Java实现基本数据结构——数组
- SSH tunnel tips
- vacode允许c_在Windows10上用VSCode搭建C语言环境
- 计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll
- 单片机c语言变频调速实验程序,单片机C语言实验例程80个
热门文章
- ps 图片 透明度 设置
- C++ 实现大小写转换
- 《中国史学名著》的读后感作文2600字
- MATLAB实现的车牌定位系统
- EndNote X8教程(PDF+video)
- 307条互联网交流缩略语(English Abbreviations on Internet)
- 好用的企业邮箱有哪些?
- 计算机现在追寻谁的原理,一路追寻-CS考研经验总结_计算机与软件_考研论坛(kaoyan.com)...
- LaTeX技巧014:实现圆圈形状的脚注
- 《洛杉矶时报》:失去李开复的Google,中国之路更艰难