2

我正在寻找一种在 Android 中将 3gp 转换为 mp4 的方法。我通过“MediaStore.ACTION_VIDEO_CAPTURE”使用设备的摄像头,视频被传输到我的服务器。我的服务器只允许 mp4 文件。几乎所有设备都将视频保存为 mp4 文件,但有些设备保存为 3gp 文件。因此,对于某些设备,我必须将 3gp 转换为 mp4。

请帮忙!!

4

1 回答 1

0

您可以通过带有 java 的 Runtime.getRuntime().exec(...) 的 shell 命令轻松使用 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。然后,您可以使用 shell 命令“uname -a”检测设备架构并选择使用哪一个。

希望这可以帮助!

于 2014-11-18T05:58:43.047 回答