Domanda

I file MP3 possono essere gestiti utilizzando questa mp3 sostegno SPI , ma sono non trovare qualcosa di simile a file mp4.

Qualsiasi aiuto sarebbe apprezzato.

- UPDATE

Quello che voglio fare è ottenere la dimensione del file, come faccio con file wave utilizzando questo codice:

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

- RISPOSTA

Ecco il codice di risposta utilizzando il suggerimento di @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;
}

-

Related, linguaggio autonomo, domanda: familiarità con struttura dati mp4?

È stato utile?

Soluzione

MP4 è un formato contenitore - per essere in grado di trovare la durata della parte interna audio, è necessario prima analizzare il contenuto dal contenitore. È possibile estrarre il contenuto di un file MP4 utilizzando ISOBOX mp4parser .

Una volta fatto questo, si hanno quindi i dati audio grezzi. Se si tratta di uno dei formati supportati in java (wav, mp3, ecc ..), allora si può solo aprire questo file, come avete fatto per wavs già. Inizialmente si avrà probabilmente estrarre l'audio in un file separato, per semplicità e più facile il debug. Quando questo è in funzione, è possibile fare la linea di estrazione -. Si implementa un'InputStreamFilter che estrae il contenuto audio dal mp4 al volo, sono necessari file esterni in modo che nessun aggiuntivi

IBM alphaWorks hanno un MP4 Java puro decoder biblioteca a disposizione, ma è forse eccessivo per secondo le esigenze attuali.

Altri suggerimenti

Xuggler ( http://www.xuggle.com/xuggler/ ) fornisce circa il migliore involucro Java per FFMPEG che ho visto -. e lascerò decodificare le immagini di quasi tutti i file, e poi fare quello che vuoi con loro

non è necessario specificare che cosa si vuole fare. Se si desidera solo per riprodurre i file, è possibile utilizzare MPlayer e controllarlo da remoto tramite l'API ProcessBuilder e stdio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top