由于业务需求需将视频中的某帧进行截取作为该视频封面,网上太多教程过于复杂麻烦,经本人研究发现可以使用Java调用FFmpeg来进行处理。

/**
* 获取指定的视频文件后进行封面截图为png并保存到指定目录
*
* @param videoFile 视频媒体文件
* @param fileName 文件名
*/
public String generateCover(String videoFile, String fileName) { String[] file = videoFile.split("\\.");
// 截图保存位置
String fileCover = file[0] + ".png"; ProcessBuilder processBuilder = new ProcessBuilder();
// 重定向错误流,防阻塞
processBuilder.redirectErrorStream(true);
// 调用ffmpeg.exe 执行截取命令,需要服务器中安装了ffmpeg并配置了环境变量
processBuilder.command("ffmpeg.exe", "-i", videoFile, "-ss", "00:00:03", "-vframes", "1", fileCover); try {
Process process = processBuilder.start();
// 获取流信息
BufferedReader reader =
new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
int exitCode = process.waitFor();
System.out.println("\nExited with error code : " + exitCode);
} catch (IOException | InterruptedException e) {
return e.toString();
}
return fileName.split("\\.")[0] + ".png";
}

最终处理结果

使用Java将视频中某一帧抽取为封面图片的更多相关文章

  1. php如何截取出视频中的指定帧作为图片

    php如何截取出视频中的指定帧作为图片 一.总结 一句话总结:截取视频指定帧为图片,php ffmpeg扩展已经完美实现,并且php ffmpeg是开源的 二.php如何截取出视频中的指定帧作为图片 ...

  2. iOS获取视频中的指定帧的两种方法

    方法一 :AVFoundation #import <AVFoundation/AVFoundation.h> - (UIImage *)thumbnailImageForVideo:(N ...

  3. Java Web项目中的经典代码抽取

    前言: 众所周知的,项目开发中做得最多的无非就是增删查改(CRUD)操作.自从国内Web项目开发渐渐盛行SSH框架之后,其开发开发流程也变得更加灵活:本文就项目开发中的业务层代码作个简单的抽取,供业内 ...

  4. python+opencv选出视频中一帧再利用鼠标回调实现图像上画矩形框

    最近因为要实现模板匹配,需要在视频中选中一个目标,然后框出(即作为模板),对其利用模板匹配的方法进行检测.于是需要首先选出视频中的一帧,但是在利用摄像头读视频的过程中我唯一能想到的方法就是: 1.在视 ...

  5. 音视频中的PTS和DTS及同步

    视频的播放过程可以简单理解为一帧一帧的画面按照时间顺序呈现出来的过程,就像在一个本子的每一页画上画,然后快速翻动的感觉.       但是在实际应用中,并不是每一帧都是完整的画面,因为如果每一帧画面都 ...

  6. [OpenCV实战]36 使用OpenCV在视频中实现简单背景估计

    目录 1 时间中值滤波 2 使用中值进行背景估计 3 帧差分 4 总结和代码 5 参考 许多计算机视觉应用中,硬件配置往往较低.在这种情况下,我们必须使用简单而有效的技术.在这篇文章中,我们将介绍一种 ...

  7. java获取视频的第一帧

    //------------maven配置文件--------------- <dependency> <groupId>org.bytedeco</groupId> ...

  8. java视频教程 Java自学视频整理(持续更新中...)

    视频教程,马士兵java视频教程,java视频 1.Java基础视频 <张孝祥JAVA视频教程>完整版[RMVB](东西网) 历经5年锤炼(史上最适合初学者入门的Java基础视频)(传智播 ...

  9. 从H264码流中获取视频宽高 (SPS帧) 升级篇

    之前写过 <从H264码流中获取视频宽高 (SPS帧)> . 但发现很多局限性,而且有时解出来是错误的. 所以重新去研究了. 用了 官方提供的代码库来解析. 花了点时间,从代码库里单独把解 ...

  10. java获取视频播第一帧

    FFMPEG 功能很强大,做视频必备的软件.大家可通过 http://ffmpeg.org/ 了解.Windows版本的软件,可通过 http://ffmpeg.zeranoe.com/builds/ ...

随机推荐

  1. 系统 内核启动期间使用ftrace

    启动阶段使能event trace 同上,配置commandline: trace_event=sched:*,timer:*,irq:* trace_buf_size=40M 有上面的实例可以知道, ...

  2. 4.3 等比数列及其前n项和

    \(\mathbf{{\large {\color{Red} {欢迎到学科网下载资料学习}} } }\)[[高分突破系列] 高二数学下学期同步知识点剖析精品讲义! \(\mathbf{{\large ...

  3. 使用Git LFS上传大文件步骤

      1.首先我们要先下载git lfs.链接地址 2.我们需要安装git lfs,但是必须安装到git/bin下面.就是你安装git的时候,那个路径.可以看我的git安装路径: 3.我们可以使用以下步 ...

  4. 玩玩虚拟化-KVM

    1.讲在前面(玩这个的心历路程) 最近一段时间想玩一些集群之类的东西,学习搞一下K8s,集群啥的,但是我没有多台服务器,如果购买云服务器成本太高,后来想到了买台台式机弄点虚拟机来玩,于是我就在某鱼上淘 ...

  5. DOM 的事件流

    事件流分为三个阶段:捕获 ==>目标 ==>冒泡 1. 事件捕获阶段:事件传播由目标节点的祖先节点逐级传播到目标节点.先由文档的根 节点 document(window)开始触发对象,最后 ...

  6. 静态库封装之ComStr类

    ComStr.h #pragma once #include <string> #include <vector> using namespace std; class Com ...

  7. 博客配套视频已上传至 B 站,欢迎关注

    博客配套视频已上传至 B 站,欢迎关注+一键三连 链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 链接 ...

  8. apisix~自定义文件上传代理插件~支持form-data文件和kv参数

    参考文献 https://stackoverflow.com/questions/24535189/composing-multipart-form-data-with-a-different-con ...

  9. 一文搞懂SaaS应用架构:应用服务、应用结构、应用交互设计

    大家好,我是汤师爷~ 今天系统性地聊聊SaaS应用架构设计. 应用架构概述 我们已经完成了SaaS系统的定位分析,明确了系统的目标和核心能力.这为接下来的应用架构设计奠定了基础. 应用架构就像整个Sa ...

  10. Python实现摇号系统

    1.引言 摇号系统在现代社会中有广泛的应用,特别是在车牌摇号.房屋摇号等公共资源分配领域.摇号系统的主要目的是通过随机分配的方式,确保资源的公平.公正分配.本文将详细介绍如何使用Python实现一个简 ...