Sziasztok!
Egy nagyon egyszerű videostreaming progit szeretnék írni, az egyik progi megjeleníti egy webkamera képét, és el is küldi egy másik proginak, ami szintén megjeleníti.
Eddig jutottam:
Az UploaderClient.java megjeleníti a képet és elküldi
Az RTPServer.java megkapja a képet az UploaderClient-től és megjeleníti:
Remélem tudtok segíteni,
Crystal
Egy nagyon egyszerű videostreaming progit szeretnék írni, az egyik progi megjeleníti egy webkamera képét, és el is küldi egy másik proginak, ami szintén megjeleníti.
Eddig jutottam:
Az UploaderClient.java megjeleníti a képet és elküldi
import java.awt.*; import java.awt.event.*; import javax.media.*; import javax.media.protocol.*; import javax.media.format.*; import javax.media.control.*; import javax.swing.*; import java.io.*; import java.net.*; import java.util.Vector; public class UploaderClient extends JFrame { public UploaderClient() { super("Uploader Client"); Processor processor = null; Player player=null; try{ setDefaultCloseOperation(EXIT_ON_CLOSE); Vector devices = CaptureDeviceManager.getDeviceList(new VideoFormat(VideoFormat.YUV)); CaptureDeviceInfo deviceInfo = (CaptureDeviceInfo) devices.elementAt(0); System.out.println(devices); DataSource webcamSource = Manager.createDataSource(deviceInfo.getLocator()); MediaLocator destLoc = new MediaLocator("rtp://localhost:1111/video/1"); processor = Manager.createProcessor(webcamSource); processor.configure(); while(processor.getState()==Processor.Configuring) { Thread.sleep(1000); System.out.println("configuring..."); } processor.setContentDescriptor(new ContentDescriptor(ContentDescriptor.RAW_RTP)); processor.realize(); while(processor.getState()!=Processor.Realized) { Thread.sleep(1000); System.out.println("realizing..."); } processor.prefetch(); while(processor.getState()!=Processor.Prefetched){ Thread.sleep(1000); System.out.println("prefetching..."); } TrackControl[] trackControl = processor.getTrackControls(); for (int i=0; i<trackControl.length; i++) { if (trackControl[i].setFormat(new VideoFormat(VideoFormat.H263_RTP))!=null) { break; } else trackControl[i].setEnabled(false); } System.out.println(processor.getDataOutput()); DataSink dataSink = Manager.createDataSink(processor.getDataOutput(), destLoc); dataSink.open(); dataSink.start(); //System.out.println(deviceInfo); if (processor!=null) System.out.println("processor ok"); if (processor.getDataOutput()!=null) System.out.println("DataSource ok"); if (processor.getDataOutput().getLocator()!=null) System.out.println("MediaLocator ok"); /*player = Manager.createPlayer(processor.getDataOutput()); JPanel p = new JPanel(new BorderLayout()); p.add(player.getVisualComponent()); p.add("South", player.getControlPanelComponent());*/ JPanel p = new JPanel(new BorderLayout()); player=Manager.createRealizedPlayer(webcamSource); p.add(player.getVisualComponent()); setContentPane(p); setSize(640, 480); setVisible(true); player.start(); } catch (Exception ex) {ex.printStackTrace();} finally { //System.out.println("Final"); //processor.close(); processor.stop(); processor.deallocate(); //player.close(); player.stop(); player.deallocate(); } } public static void main(String[] args) { new UploaderClient(); } }
Az RTPServer.java megkapja a képet az UploaderClient-től és megjeleníti:
import java.awt.*; import javax.media.*; import javax.media.protocol.*; import javax.media.format.*; import javax.media.control.*; import javax.swing.*; import java.io.*; import java.net.*; import java.util.Vector; public class RTPServer extends JFrame { public RTPServer() { super("Server"); System.out.println("super"); Player player=null; try{ MediaLocator url = new MediaLocator("rtp://localhost:1111/video/1"); System.out.println(url+" "+player); player = Manager.createRealizedPlayer(url); System.out.println("player"); //player.realize(); //System.out.println("realizing started on: "+player); //setDefaultCloseOperation(EXIT_ON_CLOSE); setLayout(new BorderLayout()); add(player.getVisualComponent()); System.out.println("added"); setSize(640, 480); setVisible(true); System.out.println("visible"); }catch (Exception ex){ex.printStackTrace();} } public static void main(String[] args) { System.out.println("started"); new RTPServer(); } }A baj az, hogy az RTPServer nem akarja létrehozni a playert, a realizálás közben megáll a progi (nem ér véget, csak nem akar továbbmenni), router mögül vagyok, de forwardolja az 1111es portot tehát azzal elvileg nem lehet baj....
Remélem tudtok segíteni,
Crystal
Page
viewed times
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))