栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

人工智能Java SDK:按帧录制本机摄像头视频(边预览边录制)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

人工智能Java SDK:按帧录制本机摄像头视频(边预览边录制)

按帧录制本机摄像头视频(边预览边录制)

运行例子
  1. 首先下载例子代码
git clone https://github.com/mymagicpower/AIAS.git
  1. 导入examples项目到IDE中:
cd live_stream_sdks/camera2mp4_sdk
  1. 运行例子代码:Camera2MP4
package me.aias.example;

import org.bytedeco.javacv.*;
import org.bytedeco.javacv.frameRecorder.Exception;
import org.bytedeco.opencv.opencv_core.IplImage;

import javax.swing.*;
import java.util.EnumSet;


public class Camera2MP4 {

    public static void main(String[] args)
            throws Exception,
            frameGrabber.Exception {
        // audioChannel用于控制是否录制音频(0:不录制/1:录制)
        // 录制1分钟视频
        recordCamera("build/output/camera.mp4", 1, 1);
    }

    
    public static void recordCamera(String outputFile, int audioChannel, float mins)
            throws frameGrabber.Exception, Exception {
        // 本机摄像头默认0
        try (frameGrabber grabber = frameGrabber.createDefault(0)) {
            // 开启抓取器
            grabber.start();

            // 转换器
            OpenCVframeConverter.ToIplImage converter = new OpenCVframeConverter.ToIplImage();
            // 抓取一帧视频,用于获取高度/宽度
            frame grabframe = null;
            while ((grabframe = grabber.grab()) != null) {
                EnumSet videoOrAudio = grabframe.getTypes();
                if (videoOrAudio.contains(frame.Type.VIDEO)) {
                    break;
                }
            }

            IplImage grabbedImage = converter.convert(grabframe);
            int width = grabbedImage.width();
            int height = grabbedImage.height();

            // 流媒体输出地址,分辨率(长,高),是否录制音频(0:不录制/1:录制)
            try (FFmpegframeRecorder recorder =
                         new FFmpegframeRecorder(outputFile, width, height, audioChannel)) {
                recorder.start(); // 开启录制器
                Canvasframe canvasframe =
                        new Canvasframe("Camera", Canvasframe.getDefaultGamma() / grabber.getGamma());
                canvasframe.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
                canvasframe.setAlwaysonTop(true);

                //获取当前系统时间
                long startTime = System.currentTimeMillis();

                while (canvasframe.isVisible() && (grabframe = grabber.grab()) != null) {
                    EnumSet videoOrAudio = grabframe.getTypes();
                    if (videoOrAudio.contains(frame.Type.VIDEO)) {
                        canvasframe.showImage(grabframe);
                    }
                    recorder.record(grabframe);

                    //获取当前的系统时间,与初始时间相减就是程序运行的毫秒数,除以1000就是秒数
                    long endTime = System.currentTimeMillis();
                    long usedTime = (endTime - startTime) / 1000;
                    if (usedTime > mins * 60) break;
                }
                // 关闭窗口
                canvasframe.dispose();
            }
        }
    }
}

效果如下:

录制视频保存于

build/output/camera.mp4
目录:

http://www.aias.top/

Git地址:

https://github.com/mymagicpower/AIAS
https://gitee.com/mymagicpower/AIAS

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/424301.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号