java如何做视频抽帧,视频转图片操作Demo

这篇具有很好参考价值的文章主要介绍了java如何做视频抽帧,视频转图片操作Demo。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

java如何做视频抽帧,视频转图片操作Demo!现在市面上很多客户提成需求,希望可以把本地的视频,抽帧(一个一个静态的图片)。至于为什么要抽帧,大家自己去百度查询。我们本次仅仅讨论如何使用java技术,实现视频的抽帧操作。


1:我们需要用到市面上一个的maven插件包。名字叫做:【javacv-platform】

在项目的pom.xml文件中加入依赖项。maven从仓库下载到本地仓库来,我们就可以开始写测试代码了。

<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>javacv-platform</artifactId>
    <version>1.5.7</version>
</dependency>

2:测试的demo代码如下所示:

这个代码仅仅是针对本地视频,某一个视频文件的抽帧操作。

package com.yrl.managedemo.util;
import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.Frame;
import org.bytedeco.javacv.Java2DFrameConverter;

import javax.imageio.ImageIO;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class FrameExtractor {
    public static void main(String[] args) {
        // 本地存储的视频文件路径
        String videoFilePath = "H:\\base\\video\\3.mp4";//此处写自己的视频路径
        // 创建FFmpegFrameGrabber对象
        FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(videoFilePath);
        try {
            //记录开始的时间节点
            long startTime = System.currentTimeMillis();
            // 打开视频文件
            grabber.start();
            // 逐帧抓取视频
            Frame frame;
            int frameNumber = 1;
            //只要获取到帧对象不为null.就一直循环下去。
            while ((frame = grabber.grabImage()) != null) {
                BufferedImage bufferedImage = frameToBufferedImage(frame);
                // 生成保存帧图像的文件路径
                //字符串是帧图片的默认起始内容,不会变化的,唯一变化的是后面的数字,起始值是1
                String outputFilePath = String.format("%s/frame_%06d.jpg", "H:\\base\\frame-video\\3", frameNumber);//此处写自己的保存路径

                // 保存帧图像到文件
                try {
                    ImageIO.write(bufferedImage, "jpg", new File(outputFilePath));
                    System.out.println("保存帧图像:" + outputFilePath);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                //完成一次帧图的存储后,末尾数字自动加1
                frameNumber++;
            }
            // 关闭视频文件
            grabber.stop();
            long endTime = System.currentTimeMillis();
            System.out.println("NeedTime is:" + (endTime - startTime)/1000 + " 秒");
        } catch (org.bytedeco.javacv.FrameGrabber.Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 将Frame转换为BufferedImage
     */
    private static BufferedImage frameToBufferedImage(Frame frame) {
        Java2DFrameConverter converter = new Java2DFrameConverter();
        return converter.getBufferedImage(frame);
    }

}

java 抽帧,视频处理,音视频,java,maven 

如图所示,代码开始疯狂的在存储帧图片到本地指定的目录下面。

java 抽帧,视频处理,音视频,java,maven 

java 抽帧,视频处理,音视频,java,maven 

java 抽帧,视频处理,音视频,java,maven 

12秒完成了这个操作任务。视频容积是 2.3MB.抽取帧后,存储的文件夹内占容积是28MB。

java 抽帧,视频处理,音视频,java,maven 如图,视频原始长度是14秒,图片帧存储了441张图片,由此,我们可以推算出来,视频是按照每秒30帧的帧速率制作的。

 里面的文字注解,写的很清晰了。不懂的话,可以留言咨询。很高兴和大家一起学习java知识。文章来源地址https://www.toymoban.com/news/detail-845003.html

到了这里,关于java如何做视频抽帧,视频转图片操作Demo的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python入门教程】基于OpenCV视频分解成图片+图片组合成视频(视频抽帧组帧)

            在人工智能爆火的今天,深度学习被广泛应用于各个领域。深度学习的模型训练离不开大量的样本库。我之前分享过【Python爬虫】批量爬取网页的图片制作数据集,今天跟大家分享一下如何使用OpenCV库对视频进行抽帧,从而增加样本图片的数量。正好也顺便分享一下

    2024年02月04日
    浏览(28)
  • 视频处理之视频抽帧的python脚本

    在计算机视觉研究中,处理视频的时候,往往需要将视频抽帧成图片。如果 多个视频都存放在一个文件夹里 ,并且希望抽帧出来的图片,以一个视频对应一个文件夹的形式存放,可以用以下代码,抽帧频率可自己手动修改,下面是抽所有帧的代码: 主要用到的是cv2里的 cv

    2024年02月10日
    浏览(32)
  • 如何使用Python进行可视化/音视频处理?

    要使用Python进行可视化和音视频处理,可以使用以下库: matplotlib:用于绘制各种类型的图表和图形,包括折线图、柱状图、散点图等。 seaborn:基于matplotlib的可视化库,提供更高级别的图表和样式,用于创建各种吸引人的统计图表。 plotly:用于创建交互式图表和数据可视化

    2024年02月09日
    浏览(44)
  • 音视频处理工具FFmpeg与Java结合的简单使用

    一、什么是FFmpeg FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcod

    2024年02月11日
    浏览(42)
  • javacv处理rtsp流,抽帧,转hls流,播放视频

    整体项目结构: pom文件引入依赖: 1.播放视频 video类: 效果展示:   2.转换hls流 效果展示   3.抽帧 效果: 工具类代码:  

    2024年02月13日
    浏览(34)
  • 「Python|音视频处理|场景案例」如何使用ffmpeg下载m3u8视频到本地并保存成mp4

    本文主要介绍如何使用ffmpeg批量下载视频到本地并保存成指定格式。 当我们希望将网页上的视频下载到本地的时候,我们可能获取到的视频地址是指向 .m3u8 格式的,当视频多的时候,手动下载并使用工具转换格式就显得工作量过大。 ffmpeg 是一个强大的音视频处理工具,具体

    2024年02月16日
    浏览(54)
  • java实现视频抽帧以及获取其他视频信息

    1.在pom.xml文件中导入jar包 2.创建工具类FetchVideoFrameUtil,复制以下代码 文章引用出处:https://cloud.tencent.com/developer/article/1655887,并在原有基础上做了优化

    2024年02月12日
    浏览(29)
  • 常用脚本-持续更新(文件重命名、视频抽帧、拆帧、删除冗余文件、yolo2xml、转换图片格式、修改xml)

    所有代码位置 :Learning-Notebook-Codes/Python/常用脚本 脚本路径: codes/files_rename.py 脚本说明:可以自动重命名某个文件夹下指定类型的文件。 修改前文件名称: img1.jpg 修改后文件名称: Le0v1n-20231123-X-0001.jpg 脚本路径: codes/extract_frames.py 脚本说明:根据帧间隔对某个文件夹下指定

    2024年02月20日
    浏览(41)
  • 音视频 ffmpeg命令图片与视频互转

    截取一张图片 转换视频为图片(每帧一张图): 图片转换为视频: 从视频中生成GIF图片 将 GIF 转化为 视频 推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家: 零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核) https://xxetb.xet.tech/s/VsFMs

    2024年02月10日
    浏览(40)
  • html(超链接,图片插入,音视频插入)

    定义:超链接:可以是一个字,可以是图片,可以是表格,或者音视频等等       是行内标签,特殊的行内标签,它里面什么都能放,除了它自己 功能 : 1、从一个页面跳到另一个页面              2、在当前页面进行跳转(锚点功能),一般可以用来做“楼梯导航”  

    2024年04月11日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包