Abspeichern von Video Daten mittels JMF

  • Themenstarter Themenstarter MeinerEiner_80
  • Beginndatum Beginndatum
M

MeinerEiner_80

Hi zusammen!
Habe ein paar kleine Probleme mit dem JMF Framework. Vielleicht hat ja jemand ne Idee?!
Folgendes, ich streame Videodaten über das Netzwerk. Dazu nutze ich eine eigene DataSource.
Nun habe ich mich an folgenden Beispielcode von Sun gehalten, um diese Daten dann abzuspeichern: http://java.sun.com/products/java-media/jmf/2.1.1/solutions/DataSourceReader.java

Um abzuspeichern, habe ich dann noch die transferDataMethode abgeändert:

Code:
public void transferData(PushBufferStream stream) {
       System.out.println("transfer data");
        try {
            stream.read(readBuffer);
            RandomAccessFile raFile = new RandomAccessFile("c:/test.mov", "rw");
            byte data[] = null;
            if (readBuffer.getData() instanceof byte[]){
                data = (byte[])readBuffer.getData();
            }
            raFile.seek(raFile.length());
            raFile.write(data, 0, data.length);
            raFile.close();
        } 
        catch (IOException e) {
            e.printStackTrace();
        }
    }

Den ContentType des Processors habe ich auch auf quicktime gestellt.
Er speichert mir auch tatsächlich eine Datei ab, aber ich kann sie nicht öffnen..unbekanntes Format meint dann der Realplayer...

Hat da vielleicht jemand ne Ahnung, woran das liegen könnte?

*grüssle*
MeinerEiner
 
Moin nochmal!
Vergesst mal meinen ersten Post. Ich habe mein Problem nun ein wenig vereinfacht, indem ich meine CustomDataSource zu einer regulären javax.media.protocol.DataSource umgewandelt habe.
Dennoch, speichern kann ich immer noch nicht. Ich versuche es derweil mit folgendem Code:
Code:
 public boolean open(javax.media.protocol.DataSource ds,Format format) {
        Format[] f = {format};
        ProcessorModel pm = new ProcessorModel(ds, f, new    FileTypeDescriptor(FileTypeDescriptor.QUICKTIME));
       try {
        final Processor p = Manager.createRealizedProcessor(pm);
        javax.media.protocol.DataSource outputDS = p.getDataOutput();
        MediaLocator ml = new MediaLocator("file:c:/test.mov");
        final DataSink datasink = Manager.createDataSink(outputDS, ml);
        datasink.open();
        datasink.start();
        p.start();
        new Timer().schedule(new TimerTask() {public void run(){closeIt(p,datasink);}}, 10000);
        
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
}


public void closeIt(Processor processor,DataSink sink){
        System.out.println("closing");
        processor.stop();
        processor.close();
        sink.close();
        processor = null;
        
        
}
Ich habe es sowohl im Quicktime - als auch im Avi Format probiert. Beide werden unterstützt. Es wird zwar eine Datei erzeugt, aber abspielen kann ich sie nicht abspielen. Der Windows Mediaplayer meint, es wäre der falsche Codec.
Hat hierzu vielleicht jemand eine Idee?

*grüssle*
MeinerEiner


Edit: Habe meinen Fehler gefunden, hat sich somit erledigt.
 
Zuletzt bearbeitet von einem Moderator:
Zurück