我正在寻找一种在Android中将3gp转换为mp4的方法。 我通过'MediaStore.ACTION_VIDEO_CAPTURE'使用设备的相机,视频将传输到我的服务器。我的服务器只允许mp4文件。几乎所有设备都将视频保存为mp4文件,但有些设备保存为3gp文件。因此,对于某些设备,我必须将3gp转换为mp4。
请帮助!!
答案 0 :(得分:0)
你可以很容易地通过shell命令使用ffmpeg和java的Runtime.getRuntime()。exec(...)将视频从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"并选择使用哪一个。
希望这有帮助!