簡體   English   中英

需要一個代碼,用於在Android 2.1中使用媒體記錄器錄制高質量的視頻?

[英]Need a code for record a video with high quality in android 2.1 using Media recorder?

我嘗試以高質量錄制視頻,我使用媒體錄制器類錄制視頻,示例代碼如下所示,

 recorder = new MediaRecorder();

    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);

但質量不如使用默認相機拍攝的視頻質量好。 我甚至不能在這里設置Camcorderprofile因為版本是2.1。 視頻看起來質量很差,有些是扭曲的。

示例視頻... http://videoxplode.com/player.php?id=808490

我需要一種方法來使用Android 2.1中的媒體記錄器捕獲視頻。

如果有人知道意味着幫助我。

謝謝。

最后我通過設置videEncodingBitRate,AudioEncodingBitRate,AudioSamplingRate等找到了在android 2.1中錄制高質量視頻的代碼。 使用此方法,您可以為視頻設置任何想要提供高質量視頻的屬性。

有關設置高質量和低質量參數的信息,請參閱本頁,

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

我使用基本版本android 2.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);

`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM