Android で 3gp を mp4 に変換する方法を探しています。「MediaStore.ACTION_VIDEO_CAPTURE」を介してデバイスのカメラを使用しており、ビデオがサーバーに転送されます。私のサーバーは mp4 ファイルのみを許可します。ほとんどすべてのデバイスはビデオを mp4 ファイルとして保存しますが、一部のデバイスは 3gp ファイルとして保存します。そのため、一部のデバイスでは 3gp を mp4 に変換する必要があります。
助けてください!!
Java の Runtime.getRuntime().exec(...) を使用してシェル コマンドを介して ffmpeg を使用すると、動画を 3gp から mp4 に簡単に変換できます。Arm デバイス (大部分の Android デバイス) 用の ffmpeg バイナリは、https ://www.dropbox.com/s/nxjnrb71qdrq5jn/ffmpeg.zip?n=138005726 から入手できます。これを rom にパッケージ化し、ファイルが 3gp であることを検出し、ffmpeg を使用して mp4 に変換してからサーバーにアップロードします。
Java コードでバイナリを実行するには、input が入力ビデオの場所、output が出力ビデオの場所、fmpeg が含める ffmpeg バイナリの場所である、次のようなメソッドを作成する必要があります。
public void convertVideo(String input, String output) throws IOException, InterruptedException
{
String args = ffmpeg + "-i" + input + "ffmpeg encoding paramaters..." + "-f mp4" + output;
Runtime r = Runtime.getRuntime();
Process p = r.exec("/system/bin/sh" + "-c" + args);
p.waitFor();
}
ffmpeg コマンド パラメーターは、対象のビデオ サイズに合わせて最適化する必要がある場合があります。また、少数の x86 アンドロイド用に静的な x86 ffmpeg を構築します。次に、シェル コマンド「uname -a」でデバイス アーキテクチャを検出し、使用するものを選択できます。
お役に立てれば!