安卓MediaRecorder属性

3
我将尝试使用MediaRecorder来减小视频文件的大小,因为我将通过网络流传视频。

这是我的代码:

private boolean prepareMediaRecorder(){
        myCamera = getCameraInstance();
        mediaRecorder = new MediaRecorder();

        myCamera.unlock();
        mediaRecorder.setCamera(myCamera);

        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
        mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

        mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_LOW));       
        mediaRecorder.setOutputFile("/sdcard/myvideo.mp4");
        mediaRecorder.setMaxDuration(60000); // Set max duration 60 sec.
        mediaRecorder.setMaxFileSize(5000000); // Set max file size 5M

        mediaRecorder.setPreviewDisplay(myCameraSurfaceView.getHolder().getSurface());

        try {
            mediaRecorder.prepare();
        } catch (IllegalStateException e) {
            releaseMediaRecorder();
            return false;
        } catch (IOException e) {
            releaseMediaRecorder();
            return false;
        }
        return true;

    }

在代码行CamcorderProfile.QUALITY_LOW中似乎有显著的差异,但我所做的其他任何操作都没有影响。我尝试使用setVideoFrameRate和setCaptureRate来降低帧速率,但两者都没有影响(不确定两者之间的区别)。我尝试通过注释掉setAudioSource行来禁用音频源(我不需要音频),但会抛出错误,说“E/MediaRecorder(7934):尝试在未设置音频源的情况下设置音频编码器”。文档说:“如果不调用此方法,则输出文件将不包含音频轨道”。

为了保持文件大小尽可能小,应该设置哪些参数?

1个回答

3
搞定了。这段代码的意思是...
mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_LOW));

设置输出格式和视频编码以及音频。删除该行代码并将视频编码和输出格式设置为禁用音频(只需省略音频部分)。这样可以大大减小文件大小。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接