2013-09-01 239 views
5

我用下面的代碼可以用Xuggler成功播放視頻。我需要能夠從inputStream而不是文件進行流式處理。我嘗試使用註釋掉的代碼來創建一個Icontainer。當我註釋掉代碼時,我修改了getTestFile方法以使用String而不是輸入流。它最初正確地獲取輸入流。Xuggler流媒體視頻

當我在Icontainer上打開時只是無限期地阻止。我不知道我是否正確接近這一點。我如何做基本相同的事情,但不使用文件和使用輸入流?

感謝:-)

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

} 

回答

3

我認爲你需要做這樣的事情:

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

...基礎上的javadoc說些什麼。它看起來像需要使用IContainerFormat類的靜態方法獲取格式。如果您提供null格式,則open方法將嘗試猜測容器類型......顯然。

+0

我該如何動態確定使用的正確格式? – rubixibuc

+0

如果您提供'null'格式,IContainer類顯然會嘗試猜測。 –

+0

當我嘗試此操作時,我只是出現部分文件錯誤的無限循環。 –