按帧录制本机摄像头视频(边预览边录制)
- 首先下载例子代码
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



