2010-06-10 13 views
10

Pliki MP3 mogą być obsługiwane przy użyciu tego mp3 SPI support, ale nie znajduję czegoś podobnego do plików MP4.Czy istnieje interfejs API Java dla plików MP4?

Każda pomoc zostanie doceniona.

--update

Co chcę zrobić, to rozmiar pliku, jak zrobić z plikami falowych przy użyciu tego kodu:

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

Oto odpowiedź Kod pomocą podpowiedź @mdma (IBM Toolkit):

/** 
* 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; 
} 

-

pokrewne, niezależny od języka, pytanie: Anyone familiar with mp4 data structure?

Odpowiedz

13

Mp4 to format kontenera - aby móc znaleźć czas trwania dźwięku w środku, musisz najpierw przeanalizować zawartość z pojemnika. Można wyodrębnić zawartość pliku mp4 przy użyciu isobox mp4parser.

Gdy to zrobisz, będziesz mieć nieprzetworzone dane audio. Jeśli jest to jeden z obsługiwanych formatów w java (wav, mp3, itp.), Możesz po prostu otworzyć ten plik, tak jak zrobiłeś już dla wavs. Początkowo prawdopodobnie wyodrębnisz audio do oddzielnego pliku, ze względu na prostotę i łatwiejsze debugowanie. Gdy to działa, możesz następnie wykonać intract intract - zaimplementujesz InputStreamFilter, który wyodrębnia zawartość audio z mp4 w locie, więc żadne dodatkowe pliki zewnętrzne nie są wymagane.

IBM Alphaworks mają dostępną bibliotekę dekoderów czystego Java MP4, ale jest to prawdopodobnie przesada dla twoich obecnych potrzeb.

+0

Projekt mp4parser nie ma plików svn ani plików do pobrania. Próbuję z JMF + Jffmpeg, ale mam ciężko z nim. –

+0

@Tom - Źródła mp4parser są tam - właśnie sprawdziłem źródła z http://mp4parser.googlecode.com/svn/trunk/ – mdma

+2

@TomBrito Naprawdę próbuję, ale ten projekt jest zbyt ubogi w dokumentację .. –

0

Nie określić, co chcesz zrobić. Jeśli chcesz tylko odtwarzać pliki, możesz użyć funkcji MPlayer i sterować nią zdalnie za pomocą interfejsu API i stdio ProcessBuilder.

+0

przy okazji, w jakim pakiecie java jest MPlayer? Może to może być pomocne .. –

+0

MPlayer to narzędzie linii poleceń. –

8

Xuggler (http://www.xuggle.com/xuggler/) zawiera informacje o najlepszym opakowaniu Javy dla FFMPEG, które widziałem - pozwoli Ci rozszyfrować obrazy z prawie dowolnego pliku, a następnie zrobić, co chcesz z nimi.

+0

Nie ma czegoś z plikami jar, zamiast bibliotek dll? Wolałbym .. –

+0

Nie widziałem dekoder czysto Java, wszystko korzysta z bibliotek natywnych. Jeśli znajdziesz, chciałbym usłyszeć o tym! – Curtis

+0

Och, nieważne. Po prostu przeczytaj zaakceptowaną odpowiedź. – Curtis

Powiązane problemy