Java 具有OutputStream的先进先出(或类似)
我从Android摄像头获取数据字节(流),然后将它们(使用OutputStream)附加到一个文件(text.data)中,然后我计划用ffmpeg读取该文件。但是,这个文件肯定会增长,我需要一种方法,在一定的时间(比如说30秒)之后,我需要删除文件的初始部分(可能对应于10秒)。这就是我所说的先进先出。在这一刻,我不知道30秒后文件会有多大,但我想这是我可以通过试用弄清楚的 这可能吗?如果是,有人能帮忙吗 编辑:再想一想,我想我需要使用一个缓冲区,当它满的时候,我写文件或类似的东西 我目前使用的代码如下:Java 具有OutputStream的先进先出(或类似),java,android,stream,outputstream,fileoutputstream,Java,Android,Stream,Outputstream,Fileoutputstream,我从Android摄像头获取数据字节(流),然后将它们(使用OutputStream)附加到一个文件(text.data)中,然后我计划用ffmpeg读取该文件。但是,这个文件肯定会增长,我需要一种方法,在一定的时间(比如说30秒)之后,我需要删除文件的初始部分(可能对应于10秒)。这就是我所说的先进先出。在这一刻,我不知道30秒后文件会有多大,但我想这是我可以通过试用弄清楚的 这可能吗?如果是,有人能帮忙吗 编辑:再想一想,我想我需要使用一个缓冲区,当它满的时候,我写文件或类似的东西 我目前使
Camera.PreviewCallback callback = new Camera.PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
//Do your processing here... Use the byte[] called "data"
Log.d("Cam ","Cam preview callback");
try {
File f=new File(Environment.getExternalStorageDirectory()+"/test.data");
if(!f.exists()){
f.createNewFile();
}
OutputStream outStream = new FileOutputStream(f,true);
Camera.Parameters parameters = camera.getParameters();
int imageFormat = parameters.getPreviewFormat();
if (imageFormat == ImageFormat.NV21) {
Camera.Size previewSize = parameters.getPreviewSize();
int frameWidth = previewSize.width;
int frameHeight = previewSize.height;
Rect rect = new Rect(0, 0, frameWidth, frameHeight);
YuvImage img = new YuvImage(data, ImageFormat.NV21, frameWidth, frameHeight, null);
outStream.write(data);
outStream.flush();
}
}
catch (FileNotFoundException iex){
Log.d("File :-",iex.getMessage());
}
catch (IOException iexp){
Log.d("File :-","IOExcp"+iexp.getMessage());
}
}
};
考虑编写一组具有您选择大小的文件。然后简单地删除第一个。@ JuStAutoJavaAc编程器:这是个好主意。考虑写一组你所选大小的文件。然后简单地删除第一个。@JustanotherJavaprogrammer:这是个好主意。