android - Mediarecorder视频大小问题

标签 android resolution mediarecorder

我在使用媒体记录器时遇到一些问题。

我尝试以 320x480 视频尺寸/分辨率进行录制,但每当我尝试这样做时,都会出现无效尺寸错误。 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 以获取支持的分辨率列表(尽管此文件在某些​​有缺陷的设备上不存在)。

关于android - Mediarecorder视频大小问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32209644/

相关文章:

android - 每秒定期更新小部件

java - 创建将文本字段发送到 Android sql 的应用程序有多容易/困难?

android - dip、px、dpi的关系

python - opencv和picamera(V2)在高分辨率下出现白/蓝平衡错误

java - 无法将应用主题更改为 Holo Dark

javascript - Joomla 网站 - 如果输入的用户的屏幕分辨率较小,则显示一条消息

html - 更新(可重现)- 使用 MediaRecorder API(音频/webm opus)录制时的差距

Android getSupportedVideoSizes 总是返回 null

android - setDataSourceFD 失败。 : status=0x80000000 on playing aac file on Samsung phones

java - Android 谷歌地图不显示实际 map