11

MP3 ファイルは、このmp3 SPI サポートを使用して処理できますが、mp4 ファイルに似たものは見つかりません。

どんな助けでも大歓迎です。

- アップデート

私がやりたいことは、次のコードを使用して wave ファイルで行うように、ファイルのサイズを取得することです。

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

- 答え

@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;
}

--

関連、言語に依存しない、質問: mp4 データ構造に詳しい人はいますか?

4

3 に答える 3

15

Mp4 はコンテナー形式です。内部のオーディオの長さを見つけるには、まずコンテナーからコンテンツを解析する必要があります。isobox mp4parserを使用して mp4 ファイルのコンテンツを抽出できます。

これが完了すると、生のオーディオ データが得られます。Java でサポートされている形式 (wav、mp3 など) の 1 つである場合は、既に wav に対して行ったように、このファイルを開くことができます。最初は、簡単にするためとデバッグを容易にするために、おそらくオーディオを別のファイルに抽出します。これが機能している場合は、抽出をインラインで実行できます。オンザフライで mp4 からオーディオ コンテンツを抽出する InputStreamFilter を実装するため、追加の外部ファイルは必要ありません。

IBM Alphaworksには純粋な Java MP4 デコーダー ライブラリが用意されていますが、現在のニーズに対してはやり過ぎかもしれません。

于 2010-06-15T19:07:38.547 に答える
8

Xuggler ( http://www.xuggle.com/xuggler/ ) は、私が見た FFMPEG 用の最高の Java ラッパーを提供します。ほぼすべてのファイルから画像をデコードし、好きなことを何でも行うことができます。彼ら。

于 2010-06-11T19:23:49.003 に答える
0

やりたいことを特定しない。ファイルを再生するだけの場合は、 API と stdioMPlayerを介してリモートで使用および制御できます。ProcessBuilder

于 2010-06-10T14:40:46.370 に答える