android MediaRecorder setVideoSize()的问题

use*_*135 11 android mediarecorder

Android可以MediaRecorder捕获分辨率高于320*240?的视频吗?

当我MediaRecorder::setVideoSize()以前设置视频大小时,捕获的视频都是分辨率320*240.更糟糕的是,较高的人无法得到一个清晰的视频,他们在某种程度上是绿色的.(使用的编码器是h263,格式是mpeg4)

这里使用的Android版本是 1.6

你能帮助我吗?

Las*_*son 8

我遇到了类似于此处描述的问题.我发现在调整视频大小之前我必须稍微重构我的代码.

重要的是在setVideoEncoder()之前调用setVideoSize().我在文档中找不到这个,但它解决了我设置特定视频分辨率的问题.还要记住,setOutputFormat()应该在setVideoSize()之前调用.

正如旁注所示,setVideoFrameRate()也是如此.如果在setVideoEncoder()之前没有调用它,它将不会有任何影响.

这是使用Android 2.3.3测试的

这是一个代码示例:

recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setVideoSize(640,480);
recorder.setVideoFrameRate(30);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);       
Run Code Online (Sandbox Code Playgroud)

  • 这给了我错误`E/MediaRecorder:start failed:-19`. (2认同)

ess*_*sse 3

首先,您需要确定您的相机支持什么。尝试:

            List<String> anti = params.getSupportedAntibanding(); 
    List<String> color = params.getSupportedColorEffects();
    List<String> focus = params.getSupportedFocusModes(); 
    List<String> flash = params.getSupportedFlashModes();
    List<Size> previewSize = params.getSupportedPreviewSizes();
    List<Size> sizes = params.getSupportedPictureSizes();
    List<Integer> frameRates = params.getSupportedPreviewFrameRates();
    List<Integer> pictureFormats = params.getSupportedPictureFormats();
    List<String> scene = params.getSupportedSceneModes(); 
    List<String> white = params.getSupportedWhiteBalance();
Run Code Online (Sandbox Code Playgroud)

这将告诉您相机支持的所有参数。其次,确保正确初始化 MediaRecorder,请参阅 google 文档以了解需要设置 MediaRecorder 的顺序。另外,如果您的 Camera.setPreviewSize 和 MediaRecorder.setVideoSize 不同,则可能会导致奇怪的行为。