私のプログラムでは、MP4ビデオを取り込み、MP3を出力したい(サーバー側のものなしで)。Android(および私のアプリ)は多くの異なるハードウェア構成で実行する必要があるため、FFMPEGを使用できない可能性があります。 。特に携帯電話の場合、これは非常にバッテリーと処理能力を大量に消費する可能性があることを私は知っていますが、ユーザーにはこのオプションが必要です。FFMPEGを使用しないJavaのネイティブライブラリが見つかりません。
3 に答える
FFMPEG は、 Debian がサポートする11のアーキテクチャで動作するようです。サポートされていないアーキテクチャは明らかに m68k だけで、その他は FreeBSD カーネルまたは Hurd カーネルへのポートの古いバージョンです。Android について私が知っている限りでは、それが ARM ベースであるという事実はすぐには変わらないでしょう。
もちろん、ネイティブ コードの Java ラッパーにはいくつかの問題がある可能性があります。それが問題ですか?私は Android プログラマーでも Java プログラマーでもありませんが、プラットフォームを検出して、適切なネイティブ ラッパーを動的にロードできると確信しています。
MPEG_4 Part 14 (.mp4 ファイル拡張子) はコンテナ形式です。つまり、複数のメディア ストリームを一緒にパッケージ化する方法を指定します。コンテナ形式の処理は、ビデオの圧縮や解凍などに比べて計算コストがはるかに低くなります。携帯電話の ARM プロセッサで .mp4 ファイルを読み込んでオーディオ ストリームを抽出するには、計算コストが高すぎることがわかったら驚くでしょう。
すぐに適切な Java ライブラリも見たことがありません。独自のライブラリを構築することは、おそらくそれほど難しくありません。コンテナ形式の解析は、ビデオの解凍よりもはるかに簡単です。また、参考として ffmpeg に libavformat の実装があります。MPEG4 Part 14 規格は、次の場所にあります。
http://webstore.iec.ch/preview/info_isoiec14496-14%7Bed1.0%7Den.pdf
そしてここ:
http://standards.iso.org/ittf/PubliclyAvailableStandards/index.html
使用したことはありませんが、 IBM ToolkitforMPEG-4のAPIをダウンロードして調べています。ただし、データアクセス機能については少しわかりにくいようです。ただし、実装は純粋なJavaです。彼らはコーデックジャーを難読化したようです。