Mediarecorder 视频大小问题
Mediarecorder video size issue
我在使用媒体记录器时遇到了一些问题。
我正在尝试录制 320x480 视频 size/resolution 但每当我尝试这样做时,它都会给我无效的尺寸错误。 1920 x 1080 工作正常。
媒体记录器代码:
setRecordingSize();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setVideoSize(RECORD_WIDTH, RECORD_HEIGHT);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setVideoEncodingBitRate(8 * 1000000);
mediaRecorder.setVideoFrameRate(30);
设置录音大小方法:
String values = getPreferenceListPreferenceString("VIDEO_RESOLUTION", "1920 x 1080 (phone/tablet)");
if(values == "2560 x 1600 (tablet)")
{
setRecordSize(2560, 1600);
return;
}
if(values == "2560 x 1440 (tablet)")
{
setRecordSize(2560, 1440);
return;
}
if(values == "2048 x 1536 (tablet)")
{
setRecordSize(2048, 1536);
return;
}
if(values == "1920 x 1080 (phone/tablet)")
{
setRecordSize(1920, 1080);
return;
}
if(values == "1280 x 800 (tablet)")
{
setRecordSize(1280, 800);
return;
}
if(values == "1280 x 720 (phone)")
{
setRecordSize(1280, 720);
return;
}
if(values == "1024 x 600 (tablet)")
{
setRecordSize(1024, 600);
return;
}
if(values == "540 x 960 (phone)")
{
setRecordSize(540, 960);
return;
}
if(values == "480 x 854 (phone)")
{
setRecordSize(480, 854);
return;
}
if(values == "480 x 800 (phone)")
{
setRecordSize(480, 800);
return;
}
if(values == "320 x 480 (phone)")
{
setRecordSize(320, 480);
return;
}
Toast.makeText(this, "ERROR, VALUES: " + values, Toast.LENGTH_LONG).show();
设置记录大小方法:
public void setRecordSize(int width, int height)
{
RECORD_WIDTH = width;
RECORD_HEIGHT = height;
}
我找不到问题应该没问题。
感谢您的帮助! :)
很可能 MediaRecorder 不支持 320x480 分辨率。您可以尝试解析 /system/etc/media_profiles.xml 以获取支持的分辨率列表(尽管此文件在某些有缺陷的设备上不存在)。
我在使用媒体记录器时遇到了一些问题。
我正在尝试录制 320x480 视频 size/resolution 但每当我尝试这样做时,它都会给我无效的尺寸错误。 1920 x 1080 工作正常。
媒体记录器代码:
setRecordingSize();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setVideoSize(RECORD_WIDTH, RECORD_HEIGHT);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setVideoEncodingBitRate(8 * 1000000);
mediaRecorder.setVideoFrameRate(30);
设置录音大小方法:
String values = getPreferenceListPreferenceString("VIDEO_RESOLUTION", "1920 x 1080 (phone/tablet)");
if(values == "2560 x 1600 (tablet)")
{
setRecordSize(2560, 1600);
return;
}
if(values == "2560 x 1440 (tablet)")
{
setRecordSize(2560, 1440);
return;
}
if(values == "2048 x 1536 (tablet)")
{
setRecordSize(2048, 1536);
return;
}
if(values == "1920 x 1080 (phone/tablet)")
{
setRecordSize(1920, 1080);
return;
}
if(values == "1280 x 800 (tablet)")
{
setRecordSize(1280, 800);
return;
}
if(values == "1280 x 720 (phone)")
{
setRecordSize(1280, 720);
return;
}
if(values == "1024 x 600 (tablet)")
{
setRecordSize(1024, 600);
return;
}
if(values == "540 x 960 (phone)")
{
setRecordSize(540, 960);
return;
}
if(values == "480 x 854 (phone)")
{
setRecordSize(480, 854);
return;
}
if(values == "480 x 800 (phone)")
{
setRecordSize(480, 800);
return;
}
if(values == "320 x 480 (phone)")
{
setRecordSize(320, 480);
return;
}
Toast.makeText(this, "ERROR, VALUES: " + values, Toast.LENGTH_LONG).show();
设置记录大小方法:
public void setRecordSize(int width, int height)
{
RECORD_WIDTH = width;
RECORD_HEIGHT = height;
}
我找不到问题应该没问题。
感谢您的帮助! :)
很可能 MediaRecorder 不支持 320x480 分辨率。您可以尝试解析 /system/etc/media_profiles.xml 以获取支持的分辨率列表(尽管此文件在某些有缺陷的设备上不存在)。