2013-09-01 11 views
5

Ich konnte erfolgreich Video mit Xuggler mit dem folgenden Code wiedergeben. Ich muss in der Lage sein, von einem InputStream anstatt von einer Datei zu streamen. Ich habe versucht, den auskommentierten Code zu verwenden, um einen Icontainer zu erstellen. Ich habe die getTestFile-Methode so geändert, dass eine Zeichenfolge anstelle eines Eingabestreams verwendet wurde, wenn ich den Code auskommentiert habe. Es hat ursprünglich den Eingangsstrom korrekt erhalten.Streaming-Video mit Xuggler

Wenn ich offen auf Icontainer rufe, wird nur unendlich lange blockiert. Ich weiß nicht, ob ich mich dem richtig nähere. Wie würde ich im Prinzip das Gleiche machen, aber ohne eine Datei zu verwenden und einen Eingabestream zu verwenden?

Danke :-)

package com.plumber.testing; 

import com.xuggle.mediatool.IMediaReader; 
import com.xuggle.mediatool.IMediaViewer; 
import com.xuggle.mediatool.ToolFactory; 
import com.xuggle.xuggler.IContainer; 
import java.io.FileNotFoundException; 
import java.io.InputStream; 

public class VideoTest { 

    public static void main(String[] args) throws FileNotFoundException { 


//  IContainer iContainer = IContainer.make(); 
//  iContainer.open(getTestFile("IMG_0983.MOV"), null); 
//  I was originally passing the icontainer to make reader 
     IMediaReader mediaReader = ToolFactory.makeReader(getTestFile("IMG_0983.MOV")); 


     IMediaViewer mediaViewer = ToolFactory.makeViewer(true); 

     mediaReader.addListener(mediaViewer); 

     while (mediaReader.readPacket() == null) ; 

    } 

    private static String getTestFile(String fileName) { 
     return VideoTest.class.getClassLoader().getResource("com/plumber/testing/testfiles/" + fileName).getPath(); 
    } 

} 

Antwort

3

Ich glaube, Sie, so etwas zu tun:

IContainer iContainer = IContainer.make(); 
    if (iContainer.open(inputStream, IContainer.Type.READ, format) >= 0) { 
     IMediaReader mediaReader = ToolFactory.makeReader(iContainer); 
     ... 
    } 

... basiert auf, was die javadocs sagen. Es sieht so aus, als müsste das Format mit statischen Methoden der Klasse IContainerFormat ermittelt werden. Wenn Sie ein null Format angeben, wird die open Methode versuchen, den Containertyp ... anscheinend zu erraten.

+0

Wie kann ich das richtige Format dynamisch bestimmen? – rubixibuc

+0

Wenn Sie ein 'Null'-Format angeben, versucht die IContainer-Klasse offensichtlich zu erraten. –

+0

Ich bekomme nur eine Endlosschleife mit partiellen Dateifehlern, wenn ich das versuche. –