我想为用户提供设置不同分辨率的选项。
我尝试过这个解决方案
camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_720P);
....
....
mCamera.unlock();
recorder.setCamera(mCamera);
recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
recorder.setProfile(camcorderProfile);
它完美地运作:质量好,一切......
当我将其设置为
时camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_480P);
FLASH ,视频出现了绿色和其他一些奇怪的颜色。
我在线阅读,人们说这是因为我的手机可能不支持QUALITY_480P。好吧,它有意义。
因此,我开始研究不同的解决方案,所以我试过......
recorder.setVideoSize(640, 480);
效果很好,
但视频看起来非常难看。
接下来,我检查了支持的视频列表。
List<Size> GetSupportedVideosResolutions = params.getSupportedVideoSizes();
分辨率:1280x720在列表中,所以
我试图设置以下内容:
recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setVideoSize(1280,720);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
它给了我一个RuntimeException错误。
问题是
为什么不能让我设置手机上可用的更高分辨率?
非常感谢任何帮助,
谢谢。
编辑:添加错误日志
04-18 17:40:07.391: E/AndroidRuntime(30191): java.lang.RuntimeException: start failed.
04-18 17:40:07.391: E/AndroidRuntime(30191): at android.media.MediaRecorder.start(Native Method)
04-18 17:40:07.391: E/AndroidRuntime(30191): at test.com.VideoActivity.prepare_StartRecorder(VideoActivity.java:1009)
04-18 17:40:07.391: E/AndroidRuntime(30191): at test.com.VideoActivity.Recorder_Start_Stop(VideoActivity.java:1102)
04-18 17:40:07.391: E/AndroidRuntime(30191): at test.com.VideoActivity$6.onClick(VideoActivity.java:246)
04-18 17:40:07.391: E/AndroidRuntime(30191): at android.view.View.performClick(View.java:4489)
04-18 17:40:07.391: E/AndroidRuntime(30191): at android.widget.CompoundButton.performClick(CompoundButton.java:104)
04-18 17:40:07.391: E/AndroidRuntime(30191): at android.view.View$PerformClick.run(View.java:18803)
04-18 17:40:07.391: E/AndroidRuntime(30191): at android.os.Handler.handleCallback(Handler.java:730)
04-18 17:40:07.391: E/AndroidRuntime(30191): at android.os.Handler.dispatchMessage(Handler.java:92)
04-18 17:40:07.391: E/AndroidRuntime(30191): at android.os.Looper.loop(Looper.java:137)
04-18 17:40:07.391: E/AndroidRuntime(30191): at android.app.ActivityThread.main(ActivityThread.java:5493)
04-18 17:40:07.391: E/AndroidRuntime(30191): at java.lang.reflect.Method.invokeNative(Native Method)
04-18 17:40:07.391: E/AndroidRuntime(30191): at java.lang.reflect.Method.invoke(Method.java:525)
04-18 17:40:07.391: E/AndroidRuntime(30191): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1209)
04-18 17:40:07.391: E/AndroidRuntime(30191): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025)
04-18 17:40:07.391: E/AndroidRuntime(30191): at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:0)
解决方案:Iam1414的回答是正确的。
我整天都在这里,而且接缝很荒谬,他的技术很有效。
我试图以4k(3840 x 2160)录制,我很肯定该设备也有能力,但它一直限制我到1080并且会在更高的任何事情上崩溃。 解决方案与Iam1414一样。
- 设置个人资料
- 设置视频大小
profile = CamcorderProfile.get(CamcorderProfile.QUALITY_2160P);
recorder.setProfile(profile);
recorder.setVideoSize(3820, 2160); //NEEDED or it will crash
不幸的是,设置配置文件会锁定编码H264并且还没有允许我将编码器设置为H265编码器。所以希望也有解决方法。
Iam1414,谢谢。如果我有代表,我会投票给你。)
编辑:这是一个非常奇怪的错误。接缝好像我不再需要使用变通方法。我只需使用匹配的配置文件即可在2160p中录制。如果问题继续存在,我会进一步调查。