2013-09-01 14 views
5

Udało mi się odtworzyć wideo z Xuggler z kodem poniżej. Muszę mieć możliwość przesyłania strumieniowego z pliku inputStream zamiast z pliku. Próbowałem użyć skomentowanego kodu, aby utworzyć Icontainer. Zmodyfikowałem metodę getTestFile, aby używać String zamiast strumienia wejściowego, gdy skomentowałem kod. Początkowo poprawnie przyjmował strumień wejściowy.Streaming wideo z Xuggler

Kiedy zadzwonię otwarty na Icontainer to po prostu bloki w nieskończoność. Nie wiem, czy podchodzę do tego poprawnie. Jak zrobić zasadniczo to samo, ale bez użycia pliku i korzystania ze strumienia wejściowego?

Dzięki :-)

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(); 
    } 

} 

Odpowiedz

3

myślę, że trzeba zrobić coś takiego:

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

... na podstawie tego, co Javadocs powiedzieć. Wygląda na to, że format należy uzyskać przy użyciu metod statycznych klasy IContainerFormat. Jeśli podasz format null, metoda open spróbuje odgadnąć typ kontenera ... widocznie.

+0

Jak mogę dynamicznie określić prawidłowy format do użycia? – rubixibuc

+0

Jeśli podasz format 'null', klasa IContainer prawdopodobnie spróbuje odgadnąć. –

+0

Po prostu próbuję uzyskać nieskończoną pętlę z częściowymi błędami plików. –