Note that there are some explanatory texts on larger screens.

plurals
  1. PONo capture devices found in FMJ
    primarykey
    data
    text
    <p>Previously I was working with JMF, but JMF need to be installed, but I don't want to add this overhead. That's why I want be moved to FMJ. And FMJ is opensource. :)</p> <p>There is some sample example given with FMJ source. And there is a FMJStudio, from where I can run and transmit RTP audio captured from microphone.</p> <p>But when I want to Transmit RTP, using the source below, it couldn't find any capture device.</p> <p>The complete source can be found on: <strong>fmj-20070928-0938_2.zip</strong> in <a href="http://fmj-sf.net" rel="nofollow">FMJ</a> And the class name of this source class is <strong>SimpleVoiceTransmiter</strong>.</p> <pre><code> //final String urlStr = URLUtils.createUrlStr(new File("samplemedia/gulp2.wav"));//"file://samplemedia/gulp2.wav"; Format format; format = new AudioFormat(AudioFormat.ULAW_RTP, 8000, 8, 1); //format = new AudioFormat(AudioFormat.ULAW_RTP, 8000.0, 8, 1, AudioFormat.LITTLE_ENDIAN, AudioFormat.SIGNED); //format = new AudioFormat(BonusAudioFormatEncodings.ALAW_RTP, 8000, 8, 1); //format = new AudioFormat(BonusAudioFormatEncodings.SPEEX_RTP, 8000, 8, 1, -1, AudioFormat.SIGNED); //format = new AudioFormat(BonusAudioFormatEncodings.ILBC_RTP, 8000.0, 16, 1, AudioFormat.LITTLE_ENDIAN, AudioFormat.SIGNED); CaptureDeviceInfo di = null; //Set to true if you want to transmit audio from capture device, like microphone. if (true) { // First find a capture device that will capture linear audio // data at 8bit 8Khz AudioFormat captureFormat = new AudioFormat(AudioFormat.LINEAR, 8000, 8, 1); Vector devices = CaptureDeviceManager.getDeviceList(captureFormat); if (devices.size() &gt; 0) { di = (CaptureDeviceInfo) devices.elementAt(0); } else { System.err.println("No capture devices"); // exit if we could not find the relevant capturedevice. System.exit(-1); } } // Create a processor for this capturedevice &amp; exit if we // cannot create it Processor processor = null; try { //processor = Manager.createProcessor(new MediaLocator(urlStr)); processor = Manager.createProcessor(di.getLocator()); } catch (IOException e) { e.printStackTrace(); System.exit(-1); } catch (NoProcessorException e) { e.printStackTrace(); System.exit(-1); } // configure the processor processor.configure(); while (processor.getState() != Processor.Configured) { try { Thread.sleep(10); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } processor.setContentDescriptor(new ContentDescriptor(ContentDescriptor.RAW_RTP)); TrackControl track[] = processor.getTrackControls(); boolean encodingOk = false; // Go through the tracks and try to program one of them to // output g.711 data. for (int i = 0; i &lt; track.length; i++) { if (!encodingOk &amp;&amp; track[i] instanceof FormatControl) { if (((FormatControl) track[i]).setFormat(format) == null) { track[i].setEnabled(false); } else { encodingOk = true; } } else { // we could not set this track to g.711, so disable it track[i].setEnabled(false); } } // At this point, we have determined where we can send out // g.711 data or not. // realize the processor if (encodingOk) { if (!new net.sf.fmj.ejmf.toolkit.util.StateWaiter(processor).blockingRealize()) { System.err.println("Failed to realize"); return; } // get the output datasource of the processor and exit // if we fail DataSource ds = null; try { ds = processor.getDataOutput(); } catch (NotRealizedError e) { e.printStackTrace(); System.exit(-1); } // hand this datasource to manager for creating an RTP // datasink our RTP datasink will multicast the audio try { String url = "rtp://192.168.1.99:49150/audio/1"; MediaLocator m = new MediaLocator(url); DataSink d = Manager.createDataSink(ds, m); d.open(); d.start(); System.out.println("Starting processor"); processor.start(); Thread.sleep(30000); } catch (Exception e) { e.printStackTrace(); System.exit(-1); } } </code></pre> <p>When I run this source, The output is: <strong>No capture devices</strong></p> <p>What may be the problem? :-(</p> <p>Edit: I uninstalled the <strong>JMF</strong> from my system.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload