Read:
package org.example;
import org.bytedeco.javacv.CanvasFrame;
import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.Frame;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
public class Read {
private String filename;
private int dk;
private String wz;
public Read(String filename){
this.filename=filename;
}
public Read(String url,int dk){
wz=url;
this.dk=dk;
}
public void readdev() throws FFmpegFrameGrabber.Exception { //读摄像头/dev/video0
readfile();
}
public void readsocket() throws IOException { //读socket输入
Socket socket=new Socket(wz,dk);
InputStream is=socket.getInputStream();
FFmpegFrameGrabber grabber=new FFmpegFrameGrabber(is);
grabber.start();
CanvasFrame canvas = new CanvasFrame("wz");//新建一个预览窗口
canvas.setCanvasSize(600,600);
Frame frame=null;
while((frame = grabber.grab()) != null){
canvas.showImage(frame);
}
grabber.stop();
}
public void readfile() throws FFmpegFrameGrabber.Exception { //读单个文件
FFmpegFrameGrabber grabber=new FFmpegFrameGrabber(filename);
grabber.start();
CanvasFrame canvas = new CanvasFrame("wz");//新建一个预览窗口
canvas.setCanvasSize(600,600);
Frame frame=null;
while((frame = grabber.grab()) != null){
canvas.showImage(frame);
}
grabber.stop();
}
public void readAllfiles() throws FFmpegFrameGrabber.Exception { //读目录下所有分ts文件
int t = 0;
// String path = "/home/wzpad/1/ts/a.";
String path=filename;
String wj = path + "a."+Integer.toString(t) + ".ts";
File file=new File(wj);
Frame frame=null;
CanvasFrame canvas = new CanvasFrame("摄像头预览");//新建一个预览窗口
canvas.setCanvasSize(600,600);
while(true){
while (!file.exists()) {
;
}
FFmpegFrameGrabber grabber=new FFmpegFrameGrabber(wj);
grabber.start();
while( (frame = grabber.grab()) != null) {
canvas.showImage(frame);
}
grabber.stop();
t++;
wj = path + Integer.toString(t) + ".ts";
file = new File(wj);
}
}
}
Write:
package org.example;
import org.bytedeco.ffmpeg.global.avcodec;
import org.bytedeco.ffmpeg.global.avutil;
import org.bytedeco.javacv.*;
import java.io.OutputStream;
public class Writer {
static boolean isrun;
static int t=0;
private String dev;
private String filename;
private OutputStream outputStream;
public Writer(String dev, OutputStream outputStream,boolean isrun){
this.dev=dev;
this.outputStream=outputStream;
this.isrun=isrun;
}
public Writer(String dev,String filename,boolean isrun){
this.dev=dev;
this.filename=filename;
this.isrun=isrun;
};
public void Writerdevoutput() throws FFmpegFrameGrabber.Exception, FFmpegFrameRecorder.Exception { //摄像头到outpurstream
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(dev);
grabber.start();
FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(outputStream, 400, 300);
recorder.setFormat("mov");
recorder.start();
System.out.println("start");
Frame frame = null;
while (isrun&&(!(frame=grabber.grab()).equals(null))) {
recorder.record(frame);
}
grabber.stop();
recorder.stop();
System.out.println("over");
}
public void writedevtofile() throws FrameGrabber.Exception, FFmpegFrameRecorder.Exception { //摄像头到文件
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(dev);
// OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(1);
grabber.start();
FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(filename, 400, 300);
recorder.setVideoCodec(avcodec.AV_CODEC_ID_MPEG4); // 13
recorder.start();
System.out.println("start");
Frame frame = null;
while (isrun&&(!(frame=grabber.grab()).equals(null))) {
recorder.record(frame);
}
grabber.stop();
recorder.stop();
System.out.println("over");
}
}