Chciałbym przechwycić obraz z mojej lokalnej kamery internetowej w zwykłej aplikacji Java (klasa rozszerza JFrame). W jaki sposób mogę to zrobić ?
0
0
nie dam głowy że to załatwi problem ale zobacz sobie Java Media Framework - http://java.sun.com/javase/technologies/desktop/media/jmf/
0
właśnie do tego doszedłem ;p poczytam i dam znac
================================================================
tak więc udało się napisać Helloworld aplikację pokazującą na formatce obraz przechwycony z mojej kamerki internetowej, caly kod ponizej
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.IOException;
import java.util.Vector;
import javax.media.CannotRealizeException;
import javax.media.CaptureDeviceInfo;
import javax.media.CaptureDeviceManager;
import javax.media.Manager;
import javax.media.NoDataSourceException;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.media.format.VideoFormat;
import javax.media.protocol.DataSource;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Main extends JFrame {
private Player player = null;
public Main() {
Vector devices = CaptureDeviceManager.getDeviceList( new VideoFormat( VideoFormat.RGB ) );
CaptureDeviceInfo deviceInfo = (CaptureDeviceInfo)devices.firstElement();
DataSource dataSource = null;
try {
dataSource = Manager.createDataSource(deviceInfo.getLocator());
}
catch ( NoDataSourceException e ) {
e.printStackTrace();
}
catch ( IOException e ) {
e.printStackTrace();
}
try {
player = Manager.createRealizedPlayer( dataSource );
}
catch ( NoPlayerException e ) {
e.printStackTrace();
}
catch ( CannotRealizeException e ) {
e.printStackTrace();
}
catch ( IOException e ) {
e.printStackTrace();
}
player.start();
JPanel mainPanel = new JPanel();
mainPanel.add( player.getVisualComponent() );
getContentPane().add( mainPanel );
addWindowListener( new WindowAdapter() {
@Override
public void windowClosing( WindowEvent e ) {
player.close();
super.windowClosing( e );
}
});
}
public static void main( String[] args ) {
Main main = new Main();
main.setDefaultCloseOperation( EXIT_ON_CLOSE );
main.setBounds( 400, 200, 400, 400 );
main.setVisible( true );
}
}