📄 videoencoder.java
字号:
package cie.mobile.video;
import name.lxm.robot.arch.*;
import com.sun.image.codec.jpeg.ImageFormatException;
import sun.awt.image.codec.JPEGImageEncoderImpl;
import java.awt.image.BufferedImage;
import java.io.*;
public class VideoEncoder extends AbstractModule
{
String[] port_names = {"img", "jpeg"};
SimpleInPort img_port;
SimpleOutPort jpeg_port;
private Object lock_a = new Object();
public VideoEncoder()
{
super();
}
public void valueUpdated()
{
synchronized(lock_a)
{
lock_a.notifyAll();
}
}
public void run()
{
BufferedImage img = null;
ByteArrayOutputStream bout = new ByteArrayOutputStream();
JPEGImageEncoderImpl jpeg = new JPEGImageEncoderImpl(bout);
while(bRun)
{
synchronized(lock_a){
try{
lock_a.wait();
}catch(InterruptedException e)
{
continue;
}
}
img = (BufferedImage) img_port.getValue();
if(img != null)
{
try{
jpeg.encode(img);
jpeg_port.setValue(this, bout.toByteArray(), 5000);
}catch(IOException e)
{
e.printStackTrace();
}
bout.reset();
}
}
}
public Port getPort(String name)
{
if(port_names[0].equals(name))
return img_port;
if(port_names[1].equals(name))
return jpeg_port;
return null;
}
public void init(ModuleDoc conf) throws Exception
{
super.init(conf);
img_port = new SimpleInPort(this, port_names[0]);
img_port.registerListener(this);
jpeg_port = new SimpleOutPort(this, port_names[1]);
}
public void stop() throws Exception
{
bRun = false;
//lock_a.notifyAll();
super.stop();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -