按帧录制本机摄像头视频(边预览边录制)
- 首先下载例子代码
git clone https://github.com/mymagicpower/AIAS.git
- 导入examples项目到IDE中:
cd live_stream_sdks/camera2mp4_sdk
- 运行例子代码: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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)