6

ビデオの録画にメディアレコーダークラスを使用しています。次のプロパティでレコーダーを初期化します。

    recorder = new MediaRecorder();
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);

しかし、ビデオの品質は、ネイティブ Android カメラで撮影したビデオと同じではありません。メディア レコーダーを使用して録画したビデオの品質は、ネイティブのビデオと比較して劣っています。どうすればビデオの品質を向上させることができますか。

誰かが私を知っているなら、私を助けてください.Thanks

4

5 に答える 5

12

最後に、videEncodingBitRate、AudioEncodingBitRate、AudioSamplingRateなどを設定して、Android2.1で高品質ビデオを録画するコードを見つけました。この方法を使用すると、高品質のビデオを提供するために、ビデオのプロパティを設定できます。

高品質および低品質のパラメータの設定については、このページを参照してください。

http://www.andgps.com/20110410/camcorderprofile-predefined-camcorder-profile-settings-for-camcorder-applications

高品質のビデオを作成するためにベースバージョンのAndroid2.1で使用したコードを以下に示します。

    recorder = new MediaRecorder();
    Method[] methods = recorder.getClass().getMethods();
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    recorder.setVideoFrameRate(24);
    recorder.setVideoSize(720, 480);

    for (Method method: methods){
    try{
        if (method.getName().equals("setAudioChannels")){
                method.invoke(recorder, String.format("audio-param-number-of-channels=%d", 1));
        } 
        else if(method.getName().equals("setAudioEncodingBitRate")){
                method.invoke(recorder,12200);
            }
        else if(method.getName().equals("setVideoEncodingBitRate")){
            method.invoke(recorder, 3000000);
        }
        else if(method.getName().equals("setAudioSamplingRate")){
            method.invoke(recorder,8000);
        }
        else if(method.getName().equals("setVideoFrameRate")){
            method.invoke(recorder,24);
        }
    }catch (IllegalArgumentException e) {

        e.printStackTrace();
    } catch (IllegalAccessException e) {

        e.printStackTrace();
    } catch (InvocationTargetException e) {

        e.printStackTrace();
    }
    }

    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);

`

于 2011-08-05T10:18:36.107 に答える
4

ビデオ録画には次の設定を使用します:-

private void cameraSettings()
{
    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
    mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
    mediaRecorder.setVideoSize(width, height);
    mediaRecorder.setVideoFrameRate(videoFramePerSecond);
}

videoFramePerSecond = 30、幅 = 1280、高さ = 720 を使用します。この設定は、要件に応じて独自に行うことができます。

于 2011-06-21T12:00:46.910 に答える
0

この行を追加してみてください

 recorder.setVideoSize(640,480); 

または、お使いのデバイスでサポートされている画面解像度を確認し、それに応じて最適なものを設定してください。

于 2011-06-21T11:58:46.917 に答える