2010-06-10 12 views
10

mp3 SPI support을 사용하여 MP3 파일을 처리 할 수 ​​있지만 mp4 파일과 비슷한 것을 찾지 못했습니다.mp4 파일 용 Java API가 있습니까?

도움을 주시면 감사하겠습니다.

AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file); 
AudioFormat format = audioInputStream.getFormat(); 
long audioFileLength = file.length(); 
int frameSize = format.getFrameSize(); 
float frameRate = format.getFrameRate(); 
float durationInSeconds = (audioFileLength/(frameSize * frameRate)); 
다음

--answer

대답입니다 : 내가 원하는 무엇

--update

은이 코드를 사용하여 웨이브 파일과 마찬가지로, 파일의 크기를 얻을 수있다 @mdma의 힌트를 사용하여 코드 (IBM 툴킷) :

/** 
* Use IBMPlayerForMpeg4SDK to get mp4 file duration. 
* 
* @return the mp4File duration in milliseconds. 
*/ 
public static long getMp4Duration(File mp4File) throws IllegalStateException, IOException { 
PlayerControl playerControl = PlayerFactory.createLightweightMPEG4Player(); 
playerControl.open(mp4File.getAbsolutePath()); 
long mili = playerControl.getDuration(); 
// int sec = (int) ((mili/1000) % 60); 
// int min = (int) ((mili/1000)/60); 
// System.out.println("IBM Tookit result = " + min + ":" + sec); 
return mili; 
} 

-

관련, 언어 독립적 질문 : Anyone familiar with mp4 data structure?

답변

13

Mp4는 컨테이너 형식입니다. 오디오의 지속 시간을 찾으려면 먼저 컨테이너에서 콘텐츠를 파싱해야합니다. isobox mp4parser을 사용하여 mp4 파일의 내용을 추출 할 수 있습니다.

일단 작업을 완료하면 원시 오디오 데이터가 생성됩니다. 그것이 자바 (wav, mp3 등 ..)에서 지원되는 형식 중 하나라면, 이미 wav에 대해했던 것처럼이 파일을 열 수 있습니다. 처음에는 간단하고 쉽게 디버깅을 위해 별도의 파일에 오디오를 추출합니다. 이것이 작동하면 추출을 인라인 할 수 있습니다. mp4에서 오디오 내용을 즉석에서 추출하는 InputStreamFilter를 구현하므로 추가 외부 파일이 필요하지 않습니다.

에는 사용할 수있는 순수한 java MP4 디코더 라이브러리가 있지만 현재 필요로하는 것은 과도 할 수 있습니다.

+0

mp4parser 프로젝트에는 svn 또는 다운로드가 없습니다. JMF + Jffmpeg로 시도하고 있습니다 만, 힘들어합니다. –

+0

@Tom - mp4parser 소스가 있습니다. - http://mp4parser.googlecode.com/svn/trunk/에서 소스를 체크 아웃했습니다. – mdma

+2

@TomBrito 정말 노력하고 있습니다 만,이 프로젝트는 너무 가난합니다. –

0

당신은 당신이 원하는 무엇을 지정하지 않습니다. 파일을 재생하려면 MPlayer을 사용하고 ProcessBuilder API 및 stdio를 통해 원격으로 제어 할 수 있습니다.

+0

그런데 자바 패키지는 MPlayer입니까? 어쩌면 도움이 될 수 있습니다 .. –

+0

MPlayer는 명령 행 도구입니다. –

8

Xuggler (http://www.xuggle.com/xuggler/)는 제가 본 FFMPEG에 대한 최고의 Java 래퍼를 제공합니다. 거의 모든 파일에서 이미지를 디코딩하고 원하는대로 할 수 있습니다.

+0

dll 대신 jar 파일에 뭔가가 있습니까? 내가 선호하는 .. –

+0

나는 순수 자바 디코더를 보지 못했지만 모든 것은 네이티브 라이브러리를 사용한다. 당신이 하나를 발견한다면, 나는 그것에 대해 듣고 싶네요! – Curtis

+0

오, 신경 쓰지 마세요. 허용 된 대답을 읽으십시오. – Curtis

관련 문제