2012-12-13 2 views
0

나는 두 개의 스트림이있는의 Xuggler 라이브러리를 사용하여 자바에서 FLV 파일을 변환하기 위해 노력하고있어 :
스트림 0 : H264은
스트림을 avc1, 비디오를 1 : 오디오, AAC, mp4aXuggler 읽기 특정 FLV 파일

이제 입력 컨테이너에서 getNumStreams() 호출이 올바른 2 스트림을 반환합니다.
두 스트림 모두 CODEC_TYPE_VIDEO/AUDIO가 아닌 CODEC_TYPE_UNKNOWN 유형을 가지고 있기 때문에 문제가 나타납니다.

따라서 여기에 내 코드 :
stream.getStreamCoder().getCodecType().equals(ICodec.Type.CODEC_TYPE_AUDIO)
결코 실제로 특정 스트림과 일치하지 않습니다.

IStreamCoder에서 코덱을 쿼리 할 때 스트림 2에 스트림을 수동으로 할당하려고 시도했지만 null입니다. 동일한 IStreamCoderCodecID은 올바른 CODEC_ID_AAC이며 위에 언급 한 것처럼 코덱 유형은 CODEC_TYPE_UNKNOWN입니다.

내 질문은 왜 이러한 스트림이 올바른 오디오/비디오가 아닌 알 수 없음으로 표시 되었습니까? 이 코드 조각은 mp4 컨테이너와 같은 대부분의 다른 형식에서도 완벽하게 작동합니다. 내 전반적인 목표는 트랜스 코딩을위한 오디오 스트림 추출입니다.

이 질문에 더 잘 대답하기 위해 예제 코드 세그먼트가 필요한지, 내가 뭔가를 생산해야하는 것을 꽤 많이 잘라 내야한다고 조언 해주십시오.


편집 : VLC와 VLC를 사용하여 문제의 FLV를 변환하려고 했으므로 이것이 Xugler 문제가 아니라고 생각합니다. 변환 작업시 알려진 작동중인 mp4 파일을 시도해 보았지만 정상적으로 진행되었습니다

답변

0

답을 찾으십시오 :
다른 모든 파일 (mp4 등)에서 차단되어 프로그램을 중단했기 때문에 파일을 열 때 다음 방법을 사용하고있었습니다.

if (input.open(file.getName(), IContainer.Type.READ, null, false, false) < 0)

이 다른 모든 파일을 작동하지만, 그것은 FLV 스트림 정보 전체 파일을 검색하지 않습니다.
나는이 수정 :

if (input.open(file.getName(), IContainer.Type.READ, null) < 0)

그리고 지금은 제대로 작동합니다. 지금부터는 flv 파일을 처리 할 수있는 간단한 조건이어야합니다.