我必须录制分辨率为640x360的视频(或以某种方式转换为此大小)。 然后,我按照Android Developer中的示例来实现我自己的相机活动,以便能够设置我想要的设置。 但是,当我按下按钮开始录制视频时,我得到了这个例外:
12-09 19:30:18.679: E/MediaRecorder(8614): start failed: -19
12-09 19:30:36.476: E/AndroidRuntime(8614): FATAL EXCEPTION: main
12-09 19:30:36.476: E/AndroidRuntime(8614): java.lang.RuntimeException: start failed.
12-09 19:30:36.476: E/AndroidRuntime(8614): at android.media.MediaRecorder.start(Native Method)
12-09 19:30:36.476: E/AndroidRuntime(8614): at com.autosonvideo.CameraManagerActivity$3.onClick(CameraManagerActivity.java:99)
12-09 19:30:36.476: E/AndroidRuntime(8614): at android.view.View.performClick(View.java:3558)
12-09 19:30:36.476: E/AndroidRuntime(8614): at android.view.View$PerformClick.run(View.java:14157)
12-09 19:30:36.476: E/AndroidRuntime(8614): at android.os.Handler.handleCallback(Handler.java:605)
12-09 19:30:36.476: E/AndroidRuntime(8614): at android.os.Handler.dispatchMessage(Handler.java:92)
12-09 19:30:36.476: E/AndroidRuntime(8614): at android.os.Looper.loop(Looper.java:137)
12-09 19:30:36.476: E/AndroidRuntime(8614): at android.app.ActivityThread.main(ActivityThread.java:4514)
12-09 19:30:36.476: E/AndroidRuntime(8614): at java.lang.reflect.Method.invokeNative(Native Method)
12-09 19:30:36.476: E/AndroidRuntime(8614): at java.lang.reflect.Method.invoke(Method.java:511)
12-09 19:30:36.476: E/AndroidRuntime(8614): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
12-09 19:30:36.476: E/AndroidRuntime(8614): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
12-09 19:30:36.476: E/AndroidRuntime(8614): at dalvik.system.NativeStart.main(Native Method)
然后,我发现这就是问题所在:
mMediaRecorder.setVideoSize(640,360);
如果我将其更改为:
mMediaRecorder.setVideoSize(640,480);
然后,它工作正常。
但我需要640x360的视频。有没有办法做到这一点?还是一种将视频从1280x720“调整”到640x360的方法?
它将在Android 4.0或更高版本上运行。
提前致谢!
答案 0 :(得分:1)
您无法选择任意分辨率 - 它必须是相机硬件支持的分辨率。您可以从Camera.Parameters
找到相机分辨率。
Android中没有内置任何设计用于将视频转码为不同分辨率的内容。欢迎您浏览第三方选项,例如ffmpeg
。