Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.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 >List ls=parameters.getSupportedPreviewSizes(); 大小=ls.get(1); 尺寸1------960 720 尺寸2------800 480 尺寸3------720 480 尺寸5--------640 384 尺寸6------576432 尺寸7------480 320_Android_Camera_Resolution_Mediarecorder - Fatal编程技术网

Android >List ls=parameters.getSupportedPreviewSizes(); 大小=ls.get(1); 尺寸1------960 720 尺寸2------800 480 尺寸3------720 480 尺寸5--------640 384 尺寸6------576432 尺寸7------480 320

Android >List ls=parameters.getSupportedPreviewSizes(); 大小=ls.get(1); 尺寸1------960 720 尺寸2------800 480 尺寸3------720 480 尺寸5--------640 384 尺寸6------576432 尺寸7------480 320,android,camera,resolution,mediarecorder,Android,Camera,Resolution,Mediarecorder,这是安卓系统的尺寸列表和更多信息。好的,我测试了许多变体,唯一在真实设备上运行良好的版本是: CamcorderProfile camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH); // THREE_GPP works well but only on Phones // camcorderProfile.fileFormat = MediaRecorder.OutputF

这是安卓系统的尺寸列表和更多信息。

好的,我测试了许多变体,唯一在真实设备上运行良好的版本是:

CamcorderProfile camcorderProfile    = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);

// THREE_GPP works well but only on Phones            
//  camcorderProfile.fileFormat = MediaRecorder.OutputFormat.THREE_GPP;

// so better you use MPEG_4 for most Devices and PC
camcorderProfile.fileFormat = MediaRecorder.OutputFormat.MPEG_4;
camcorderProfile.videoCodec = MediaRecorder.VideoEncoder.MPEG_4_SP;

mrec.setProfile(camcorderProfile);

视频编码格式呢?你设置了哪一个,默认应用程序设置了什么?您可能还想检查输出格式..嘿Ravi,我检查了编码格式。最高的格式是H264,这是它试图使用的格式,这会产生绿色闪烁。使用H263可以停止绿色闪烁,但生成的视频质量要低得多,远低于720 x 480分辨率的视频。至于输出格式,我会看一看,看它是否能正常工作。干杯。我只是试着改变输出格式,但没用。3gpp也做了同样的事情,任何其他格式都会导致强制关闭。实际分辨率似乎是-1920 x 1088。可以检查相机支持的分辨率吗?从列表中设置最接近1080p的分辨率?嗨,威尔,我在Galaxy S2上下载了几个视频录制应用程序,所有这些应用程序在设置为高设置时都会产生类似于您所描述的效果。看起来有很多小屏幕是平铺的,大部分是绿色的,有些是紫色的。在其中一个应用程序中,它有一个“覆盖分辨率(Galaxy SII)”选项,允许高达720p的录制,如前所述。我的朋友有一个Nexus S,他对应用程序没有问题。但它不能录制1080p。我开始认为这是S2/1080p的问题?那么你是说SurfaceView预览的大小会影响最终输出的视频吗?此外,还使用CamcorderProfile.QUALITY\u HIGH配置了比特率,因此它应该是支持的最高比特率。谢谢jagsaund的帮助,我会搞乱SurfaceView的尺寸,看看会发生什么。很棒的发现!我一定会尽快检查这个解决方案,看看它是如何工作的。干杯。我刚试过这个,但到目前为止运气不好。设置cam_模式使预览闪烁,录制完全失败。(这与使用setProfile()有关。我最近才有时间来检查这一点,到目前为止,它似乎工作得很好。在SGS2上,使用set(“cam_模式”,1)似乎将其置于HD录制模式,正如您提到的使用focus mode INFINITY(我使用INFINITY,因为它不需要高min SDK版本)。您知道在处理低于1920 x 1080的任何对象时是否需要将cam_模式设置为其他模式吗?cam_模式技巧对我也很有效。非常感谢。但是,设置后,我发现S2上的相机快照已损坏(以前没有损坏)。我仍在研究这个问题。另外,我没有发现有必要使用setFocusMode。我会做更多的测试来检查这个问题。谢谢你的帮助!这在三星Galaxy S2 2.3上运行得很好,但在4.0上似乎崩溃了-有什么建议吗?由于某些原因,降低质量会很好。800x480模式在Galaxy S II和Android 4上不再工作。只是将800替换为640,一切正常。getParams()方法在哪里?Tom H,你不需要它-这是我的应用程序特定方法,包含用户定义的设置。质量就是其中之一。我明白了!我刚刚有一个任务要完成。希望我事先看到你的答案…节省一天或两天;-)虽然很有趣,但我不确定这是否完全可以作为一个答案。
camera = Camera.open();
Camera.Parameters param = camera.getParameters();
param.set( "cam_mode", 1 );     
camera.setParameters( param );
mediarecorder.setVideoSize(1920, 1080);
mediarecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
parame.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
param.setFocusMode(Camera.Parameters.FOCUS_MODE_INFINITY);
enum InternalCameraQuality {
    LOW, MEDIUM, HIGH
}
// signature types are irrelevant here
File start(DeviceHandler handler, FileHelper fh) throws IOException {
    file = fh.createTempFile(".mp4");

    camera = Camera.open();
    setCameraParameters(camera);
    camera.setPreviewDisplay(getHolder());
    camera.unlock();

    recorder = new MediaRecorder();
    recorder.setCamera(camera);
    setRecorderParameters(recorder);

    recorder.prepare();
    recorder.start();

    return file;
}

void setCameraParameters(Camera camera) {
    Camera.Parameters param = camera.getParameters();

    // getParams() simply returns some field holding configuration parameters
    // only the 'quality' parameter is relevant here
    if (getParams().quality != InternalCameraQuality.LOW) {
        // Samsung Galaxy hack for HD video
        param.set("cam_mode", 1);
    }

    Pair<Integer, Integer> resolution = getResolution(getParams().quality);
    param.setPreviewSize(resolution.first, resolution.second);
    param.setFocusMode(Camera.Parameters.FOCUS_MODE_INFINITY);

    camera.setParameters(param);
}

void setRecorderParameters(MediaRecorder recorder) {
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

    Pair<Integer, Integer> resolution = getResolution(getParams().quality);

    CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
    profile.videoFrameWidth = resolution.first;
    profile.videoFrameHeight = resolution.second;
    recorder.setProfile(profile);

    recorder.setOutputFile(file.getAbsolutePath());
    recorder.setPreviewDisplay(getHolder().getSurface());
}

Pair<Integer, Integer> getResolution(InternalCameraQuality quality) {
    final int width, height;
    switch (quality) {
        case LOW:
            width = 800;
            height = 480;
            break;
        case MEDIUM:
            width = 1280;
            height = 720;
            break;
        case HIGH:
            width = 1920;
            height = 1080;
            break;
        default:
            throw new IllegalArgumentException("Unknown quality: " + quality.name());
    }
    return Pair.create(width, height);
}
        List<Size> ls = parameters.getSupportedPreviewSizes();
        Size size = ls.get(1);
        sizes 1 ----------960 720
        sizes 2 ----------800 480
        sizes 3 ----------720 480
        sizes 5 -----------640 384
        sizes 6 ----------576 432
        sizes 7 ----------480 320
CamcorderProfile camcorderProfile    = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);

// THREE_GPP works well but only on Phones            
//  camcorderProfile.fileFormat = MediaRecorder.OutputFormat.THREE_GPP;

// so better you use MPEG_4 for most Devices and PC
camcorderProfile.fileFormat = MediaRecorder.OutputFormat.MPEG_4;
camcorderProfile.videoCodec = MediaRecorder.VideoEncoder.MPEG_4_SP;

mrec.setProfile(camcorderProfile);