Alguem teria um código funcional que capture imagens com web cam para linux ou windows.
Obrigado
Alguem teria um código funcional que capture imagens com web cam para linux ou windows.
Obrigado
porra, kadisk, assim vc arrebenta com o forum, cara… chegar e pedir um código pronto? putz, google ta aí pra isso cara, pesquise, implemente ou tente adaptar um código pronto
às suas necessidades e então venha aqui pedir uma AJUDA em algum ponto do SEU código. com essa atitude de pedir algo pronto e “mastigado” vc n chega em nenhum lugar.
abs.
[quote=gambazinho]porra, kadisk, assim vc arrebenta com o forum, cara… chegar e pedir um código pronto? putz, google ta aí pra isso cara, pesquise, implemente ou tente adaptar um código pronto
às suas necessidades e então venha aqui pedir uma AJUDA em algum ponto do SEU código. com essa atitude de pedir algo pronto e “mastigado” vc n chega em nenhum lugar.
abs.[/quote]
Concordo plenamente, mas tem casos que a coisas que a pessoa não sabe nem por onde começar a pesquisar e fica dificil começar a fazer algum codigo. :shock: :idea: :idea: .
eu tambem ja me aconteceu algo parecido, nem saber por onde começar a pesquisar
eu até tente mais da esse erro
Exception in thread “VFW Request Thread” java.lang.UnsatisfiedLinkError: JMFSecurityManager: java.lang.UnsatisfiedLinkError: no jmvfw in java.library.path
at com.sun.media.JMFSecurityManager.loadLibrary(JMFSecurityManager.java:206)
at com.sun.media.protocol.vfw.VFWCapture.(VFWCapture.java:19)
at com.sun.media.protocol.vfw.VFWSourceStream.doConnect(VFWSourceStream.java:241)
at com.sun.media.protocol.vfw.VFWSourceStream.run(VFWSourceStream.java:763)
at java.lang.Thread.run(Thread.java:619)
poste o seu código para podermos lhe ajudar melhor.
package webcam;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.Vector;
import javax.media.CannotRealizeException;
import javax.media.CaptureDeviceInfo;
import javax.media.CaptureDeviceManager;
import javax.media.DataSink;
import javax.media.Format;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.NoDataSinkException;
import javax.media.NoDataSourceException;
import javax.media.NoProcessorException;
import javax.media.Processor;
import javax.media.ProcessorModel;
import javax.media.control.FormatControl;
import javax.media.control.MonitorControl;
import javax.media.datasink.DataSinkEvent;
import javax.media.datasink.DataSinkListener;
import javax.media.datasink.EndOfStreamEvent;
import javax.media.protocol.CaptureDevice;
import javax.media.protocol.DataSource;
import javax.media.protocol.FileTypeDescriptor;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class CapturaImagens extends JFrame {
private JButton captureButton;
private Component progressoGravacao;
private Format formats[], formatoSelecionado;
private FormatControl controlesFormato[];
private CaptureDeviceInfo informacoesDispositivo;
private Vector dispositivosLista;
private DataSource inSource, saida;
private DataSink dataSink;
private Processor processor;
public CapturaImagens() {
super( "Captura..." );
JPanel buttonPanel = new JPanel();
getContentPane().add( buttonPanel );
captureButton = new JButton( "Capturar e Salvar" );
buttonPanel.add( captureButton, BorderLayout.CENTER );
captureButton.addActionListener( (ActionListener) new CaptureHandler());
Manager.setHint( Manager.LIGHTWEIGHT_RENDERER, Boolean.TRUE );
addWindowListener(
new WindowAdapter() {
@Override
public void windowClosing( WindowEvent windowEvent ) {
if ( processor != null )
processor.close();
}
}
);
}
private class CaptureHandler implements ActionListener {
public void actionPerformed( ActionEvent actionEvent ) {
dispositivosLista = CaptureDeviceManager.getDeviceList( null );
if ((dispositivosLista == null) || (dispositivosLista.size() == 0)) {
informarErro( "Nenhum dispositivo de captura encontrado!" );
return;
}
// lista todos os dispositivos encontrados
String nomesDispositivos[] = new String[dispositivosLista.size()];
for ( int i = 0; i < dispositivosLista.size(); i++){
informacoesDispositivo = (CaptureDeviceInfo)dispositivosLista.elementAt(i);
nomesDispositivos[i] = informacoesDispositivo.getName();
}
int indiceDispositivoSelecionado = capturarIndiceDispositivoSelecionado(nomesDispositivos);
if (indiceDispositivoSelecionado == -1)
return;
// pega informações do dispositivo selecionado
informacoesDispositivo = (CaptureDeviceInfo)dispositivosLista.elementAt(indiceDispositivoSelecionado);
formats = informacoesDispositivo.getFormats();
if (inSource != null)
inSource.disconnect();
try {
inSource = Manager.createDataSource(informacoesDispositivo.getLocator());
controlesFormato = ((CaptureDevice)inSource).getFormatControls();
formatoSelecionado = capturarFormatoSelecionado(formats);
if (formatoSelecionado == null)
return;
mostrarFormatoDispositivo(formatoSelecionado);
captureSaveFile();
}
catch (NoDataSourceException noData) {
noData.printStackTrace();
}
catch (IOException io) {
io.printStackTrace();
}
}
}
public void mostrarFormatoDispositivo(Format formatoAtual) {
for (int i = 0; i < controlesFormato.length; i++) {
if (controlesFormato[i].isEnabled() ) {
controlesFormato[i].setFormat(formatoAtual);
System.out.println ("Formato atualmente como "+controlesFormato[i].getFormat() );
}
}
}
public int capturarIndiceDispositivoSelecionado(String[] names) {
String name = (String) JOptionPane.showInputDialog(this, "Selecione um dispositivo: ", "Dispositivo",
JOptionPane.QUESTION_MESSAGE,
null,
names,
names[0]);
if (name != null)
return Arrays.binarySearch(names, name);
else
return -1;
}
public Format capturarFormatoSelecionado(Format[] formatosLista) {
return (Format) JOptionPane.showInputDialog(this,"Selecione um formato: ", "Formatos suportados",
JOptionPane.QUESTION_MESSAGE,
null,
formatosLista,
null);
}
public void informarErro(String error) {
JOptionPane.showMessageDialog(this, error, "Informação", JOptionPane.ERROR_MESSAGE);
}
public File capturarArquivoSalvo() {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
int resultado = fileChooser.showSaveDialog(this);
if (resultado == JFileChooser.CANCEL_OPTION)
return null;
else
return fileChooser.getSelectedFile();
}
public void showSaveMonitor() {
int result = JOptionPane.showConfirmDialog(this,progressoGravacao, "Capturando...",
JOptionPane.DEFAULT_OPTION,
JOptionPane.PLAIN_MESSAGE);
if ((result == JOptionPane.OK_OPTION) || (result == JOptionPane.CLOSED_OPTION)) {
processor.stop();
processor.close();
JOptionPane.showMessageDialog(this,"Captura salva com sucesso!");
}
}
public void captureSaveFile() {
Format outFormats[] = new Format[1];
outFormats[0] = formatoSelecionado;
FileTypeDescriptor outFileType = new FileTypeDescriptor(FileTypeDescriptor.MSVIDEO);
try {
processor = Manager.createRealizedProcessor(new ProcessorModel(inSource, outFormats, outFileType));
if (!gravarDados())
return;
processor.start();
MonitorControl controles = (MonitorControl)processor.getControl("javax.media.control.MonitorControl");
progressoGravacao = controles.getControlComponent();
showSaveMonitor();
}
catch (NoProcessorException noProcessor) {
noProcessor.printStackTrace();
}catch (CannotRealizeException cannotRealize) {
cannotRealize.printStackTrace();
}catch (IOException ioException) {
ioException.printStackTrace();
}
}
public boolean gravarDados() {
File arquivoSalvo = capturarArquivoSalvo();
if (arquivoSalvo == null)
return false;
saida = processor.getDataOutput();
if (saida == null) {
informarErro("Sem saída para processar!");
return false;
}
try {
MediaLocator localizacaoArquivo = new MediaLocator(arquivoSalvo.toURL());
dataSink = Manager.createDataSink(saida, localizacaoArquivo);
dataSink.addDataSinkListener(new DataSinkListener() {
public void dataSinkUpdate(DataSinkEvent dataEvent) {
if (dataEvent instanceof EndOfStreamEvent)
dataSink.close();
}
}
);
dataSink.open();
dataSink.start();
}
catch ( NoDataSinkException noDataSinkException ) {
noDataSinkException.printStackTrace();
return false;
}
catch ( SecurityException securityException ) {
securityException.printStackTrace();
return false;
}
catch ( IOException ioException ) {
ioException.printStackTrace();
return false;
}
return true;
}
public static void main(String args[]){
CapturaImagens capturaImagens = new CapturaImagens();
capturaImagens.setSize(300, 300);
capturaImagens.setVisible(true);
}
}