我是新来JavaCV,我有困难的时候找到有关,我很感兴趣的话题不同的问题,好的教程,我已经成功实现某种实时视频从我的摄像头流,但问题是,我使用此代码段,我在网上找到:
@Override
public void run() {
FrameGrabber grabber = new VideoInputFrameGrabber(0); // 1 for next
// camera
int i = 0;
try {
grabber.start();
IplImage img;
while (true) {
img = grabber.grab();
if (img != null) {
cvFlip(img, img, 1);// l-r = 90_degrees_steps_anti_clockwise
cvSaveImage((i++) + "-aa.jpg", img);
// show image on window
canvas.showImage(img);
}
导致多个JPG文件。
我真正想要做的就是抓住我的摄像头输入,并显示它沿着我想将其保存在一个适当的视频文件。 我了解FFmpegFrameRecorder
但不知道如何实现它。 此外,我一直在想,什么是视频文件格式的不同选择,因为flv
也许将是对我更有用。
它已经相当的旅程。 那我不知道什么是他们背后的含义,但这里是捕捉和利用JavaCV一个网络摄像头录制视频的工作示例还是几件事情:
import com.googlecode.javacv.CanvasFrame;
import com.googlecode.javacv.FFmpegFrameRecorder;
import com.googlecode.javacv.OpenCVFrameGrabber;
import com.googlecode.javacv.cpp.avutil;
import com.googlecode.javacv.cpp.opencv_core.IplImage;
public class CameraTest {
public static final String FILENAME = "output.mp4";
public static void main(String[] args) throws Exception {
OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);
grabber.start();
IplImage grabbedImage = grabber.grab();
CanvasFrame canvasFrame = new CanvasFrame("Cam");
canvasFrame.setCanvasSize(grabbedImage.width(), grabbedImage.height());
System.out.println("framerate = " + grabber.getFrameRate());
grabber.setFrameRate(grabber.getFrameRate());
FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(FILENAME, grabber.getImageWidth(),grabber.getImageHeight());
recorder.setVideoCodec(13);
recorder.setFormat("mp4");
recorder.setPixelFormat(avutil.PIX_FMT_YUV420P);
recorder.setFrameRate(30);
recorder.setVideoBitrate(10 * 1024 * 1024);
recorder.start();
while (canvasFrame.isVisible() && (grabbedImage = grabber.grab()) != null) {
canvasFrame.showImage(grabbedImage);
recorder.record(grabbedImage);
}
recorder.stop();
grabber.stop();
canvasFrame.dispose();
}
}
这是有点难受,使这项工作因此除了那些可能有同样的问题,如果你遵循官方指导如何在Windows 7/64位设置JavaCV并想用上面的代码,你应该创建捕获视频在新目录C:\
: C:\ffmpeg
,并从提取文件ffmped
释放你已经被告知官方指南中下载。 然后,你应该添加C:\ffmpeg\bin
您Enviorment variable PATH
,这一切。 关于这一步的所有学分去karlphillip
和他的岗位在这里