DataSink Problem
I have been searching this forum for last 3 days and i have seen lots of topic about DataSink creation problem when we try to save an RTP Stream to a file.
I am trying to save an incoming RTP Video stream to an avi file but not been able to do so. My code is.
This is in one Class and Media Locator is a diff class
if (evtinstanceof NewReceiveStreamEvent){
try{
stream = ((NewReceiveStreamEvent)evt).getReceiveStream();
DataSource ds = stream.getDataSource();
MediaConverter md=new MediaConverter(ds);
.
.
.
.
}
Now in the Class MediaConvert i am trying to save this Stream to a File.
import javax.media.*;
import javax.media.control.*;
import javax.media.protocol.*;
import javax.media.format.*;
import java.awt.*;
import java.io.*;
class MediaConverterimplements ControllerListener
{
MediaLocator source;
MediaLocator dest;
Processor input =null;
DataSink output =null;
public MediaConverter(DataSource ds)
{
System.out.println("Conversion started...");
try
{
input = Manager.createProcessor(ds);
input.addControllerListener(this);
}
catch (IOException e){ System.out.println(e);}
catch (NoProcessorException e){ System.out.println(e);}
input.configure();
}
publicsynchronizedvoid configureCompleted()
{
System.out.println("Processor configured.");
input.setContentDescriptor(new ContentDescriptor(ContentDescriptor.RAW));
input.realize();
}
publicsynchronizedvoid realizeCompleted()
{
System.out.println("Processor realized.");
dest =new MediaLocator("file://d:\\home\\Datasink.avi");
//dest = new MediaLocator("rtp://192.168.1.150:5050/video/1");
try
{
output = Manager.createDataSink(input.getDataOutput(), dest);
}
catch (NoDataSinkException e){
System.out.println(e);
}
try
{
if(output==null){
System.out.println("DataSink is null");
}else{
output.open();
output.start();
}
}
catch (IOException e){
System.out.println(e);
}
input.start();
}
publicsynchronizedvoid stop()
{
input.stop();
input.close();
try
{
output.stop();
output.close();
}
catch (IOException e){
System.out.println(e);
}
}
publicsynchronizedvoid controllerUpdate(ControllerEvent evt)
{
if (evtinstanceof ConfigureCompleteEvent)
{
configureCompleted();
}
elseif (evtinstanceof RealizeCompleteEvent)
{
realizeCompleted();
}
elseif (evtinstanceof EndOfMediaEvent)
{
System.out.println("End of stream.");
stop();
}
}
}
This stream is coming From AVTransmit2.java given by Sun.
Now the problem is that i m getting the exception
Conversion started...
Processor configured.
Processor realized.
javax.media.NoDataSinkException: Cannot find a DataSink for: com.sun.media.multiplexer.RawBufferMux$RawBufferDataSource@b1c5fa
DataSink is null
Could anybody please provide some help or hint or suggestion on this.
Thanks in advance.

