Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:修改录制的视频质量_Android_Video - Fatal编程技术网

Android:修改录制的视频质量

Android:修改录制的视频质量,android,video,Android,Video,我正在用MediaRecorder录制视频。假设视频大小保持不变,我不清楚应该使用什么参数来改变图像质量。例如,我希望始终创建640x480 mp4视频。我可以调整哪些参数来提高或降低质量?您可以尝试使用 recorder.setVideoSize(640, 480); recorder.setVideoFrameRate(16); //might be auto-determined due to lighting recorder.setVideoEncodingBitRate(300000

我正在用MediaRecorder录制视频。假设视频大小保持不变,我不清楚应该使用什么参数来改变图像质量。例如,我希望始终创建640x480 mp4视频。我可以调整哪些参数来提高或降低质量?

您可以尝试使用

recorder.setVideoSize(640, 480);
recorder.setVideoFrameRate(16); //might be auto-determined due to lighting
recorder.setVideoEncodingBitRate(3000000);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);// MPEG_4_SP
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);


有关设置高质量和低质量参数的信息,请参见

mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); 
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);

String path = Environment.getExternalStorageDirectory() + "/file.mp4";
mediaRecorder.setOutputFile(path);

您必须使用
MediaRecorder
中的
setVideoEncodingBitRate()
提高视频编码比特率以提高视频质量

mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);

mRecorder.setVideoEncodingBitRate(4000000)`

不,我不能用那个。我必须使用setVideoEncoder手动设置视频。我相信还有其他参数可以让您指定特定的值,如fps等。。尽管如此,我还是不确定要设置什么参数。我也遇到了这个问题。不过,博文说,这将因设备而异,这意味着查询功能。这可能是唯一的办法。帧率和比特率是我应该处理的唯一参数吗?经过实验,设置帧率似乎没有任何明显的区别。然而,比特率确实如此。将其设置为300000确实可以创建更高质量的视频(当然,以牺牲文件大小为代价)。你知道有什么API可以用来确定设备支持的最大比特率吗?我不太了解这个API。也检查一下这个。。使用H264是否比MP4提供更高的质量?setProfile实际上会生成一个IllegalStateException。在花了一天的时间之后,我没有使用内置的配置文件,只看到了使用它的持续异常。只需对setprofile的这两行进行注释,并给出与所示相同的参数即可。u将获得高质量的视频,这基本上就是我现在正在做的,除了视频编码器设置为MPEG_4_SP。我尝试了H264,但录制开始时会出现异常。并不是所有的摄像头都支持H264。无论如何,手动设置比特率似乎是一种可行的方法。现在,如果我能弄清楚如何查询一台设备支持的最大速率是多少的话。u当前使用的版本是2.2还是其他版本??
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);