2013-09-01 3 views
5

아래 코드로 Xuggler로 비디오를 성공적으로 재생할 수있었습니다. 파일 대신 inputStream에서 스트리밍 할 수 있어야합니다. 주석 처리 된 코드를 사용하여 Icontainer를 만들려고했습니다. 나는 코드를 주석 처리 할 때 inputstream 대신 String을 사용하도록 getTestFile 메소드를 수정했다. 그것은 원래 inputstream을 정확하게 얻었습니다.Xuggler로 비디오 스트리밍

Icontainer를 open으로 호출하면 무기한으로 차단됩니다. 이 문제에 올바르게 접근하고 있는지 나는 모른다. 어떻게하면 기본적으로 같은 일을하지만 파일을 사용하지 않고 입력 스트림을 사용합니까?

덕분에

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

:-) 난 당신이 같은 것을 할 필요가 있다고 생각 다음의 javadoc 무슨 말을 기준으로

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

.... IContainerFormat 클래스의 정적 메서드를 사용하여 형식을 가져와야하는 것 같습니다. null 형식을 제공하면 open 메서드는 컨테이너 유형을 추측하려고 시도합니다.

+0

올바른 형식을 동적으로 결정하려면 어떻게해야합니까? – rubixibuc

+0

'null '형식을 지정하면 IContainer 클래스가 추측을 시도합니다. –

+0

나는 이것을 시도 할 때 부분적인 파일 오류가있는 무한 루프를 얻는다. –