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()); 
/************************/

法二:比特率

看一下是否设置了视频的比特率编码,可以适当调高比特率的值,有奇效。(在师兄的机智的帮助下,找到了这个法子,我实在是离不开师兄了)
在这里插入图片描述
代码在上面的注释中,没有的话试试加一行这个代码看看,或者是将5改成8改成10。

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

注:

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值