Android MediaRecorder录制模糊的解决办法

依照网上的demo,自写的应用录制15秒的视频只有200K左右的大小,打开一看就很模糊。影响了视频的后续处理(我们需要对视频后期提取颜色或动作变化的波形)。需要提高视频的录制质量。

解决办法:
网上流传比较广的一种办法是

法一:设置CamcorderProfile

//代码源自网络

 /***********原来的写法************/       
        mMediaRecorder=new MediaRecorder();  
        //设置视频源  
        mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);  
        //设置音频源  
        mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);  
        //设置文件输出格式  
        mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);  
        //设置视频编码方式  
        mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP); 
         
        /*
         * 设置视频编码帧率
           mMediaRecorder.setVideoEncodingBitRate(5*1920*1080);
         */
         
        //设置音频编码方式  
        mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);  
        //设置视频高和宽,注意文档的说明:  
        Must be called after setVideoSource().  
        //设置录制的视频帧率,注意文档的说明:  
        mMediaRecorder.setVideoFrameRate(30);   
        //设置输出路径  
        mMediaRecorder.setOutputFile("/sdcard/Document/data/"+ currentTemp + "/"
+ currentXml + "/"+System.currentTimeMillis()+".mp4");
        //设置预览画面  
        mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface()); 
        mSurfaceHolder.setFixedSize(640,480);//最高只能设置640x480
        mMediaRecorder.setVideoSize(640,480);//最高只能设置640x480  
        //设置视频的最大持续时间  
        mMediaRecorder.setMaxDuration(30000);


       /***********调整后的写法************/       
       //next codes is right for 2.3 and 4.0  
        mMediaRecorder=new MediaRecorder();  
        //设置视频源  
        mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);  
        //设置音频源  
        mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);  
        
        //相机参数配置类
        //直接采用QUALITY_HIGH,这样可以提高视频的录制质量,但是不能设置编码格式和帧率等参数。
       CamcorderProfile cProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH); 
       mMediaRecorder.setProfile(cProfile);
        //设置录制的视频帧率,注意文档的说明:  
        mMediaRecorder.setVideoFrameRate(30);   
        //设置输出路径  
        mMediaRecorder.setOutputFile("/sdcard/Document/data/"+ currentTemp + "/"
+ currentXml + "/"+System.currentTimeMillis()+".mp4");
        //设置预览画面  
        mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface()); 
/************************/

法二:比特率

看一下是否设置了视频的比特率编码,可以适当调高比特率的值,有奇效。(在师兄的机智的帮助下,找到了这个法子,我实在是离不开师兄了)
Android MediaRecorder录制模糊的解决办法_第1张图片
代码在上面的注释中,没有的话试试加一行这个代码看看,或者是将5改成8改成10。

我一开始没有设置比特率,加上后已经满足计算需求,改成8效果更好了一些,并未尝试10。

注:

如果是像我一样一开始只有小几百K的话,那大概就是没有设置比特率,这时候系统调用了最低的配置来降低消耗,加上那一行代码,有奇效。

你可能感兴趣的:(Android开发)