Android多媒体技术(二)浅析Camera视频实时采集中涉及的参数配置

本文深入探讨Android多媒体技术,重点分析Camera视频实时采集中的关键参数,包括帧率、关键帧、过渡帧、码率、清晰度和分辨率。讨论了码率与图像质量、分辨率的关系,并举例说明如何计算音频的采样率、比特率、采样位数和声道的关系。

浅析Camera视频实时采集中涉及的参数配置                  

 

  作者:          

  蒋东国                                                                             

  时间:

  2017年1月20日 星期五

  应用来源:

 mpu

  博客地址:

 http://blog.youkuaiyun.com/andrexpert/article/details/54631629


1.录制视频

(1)帧率(frame rate):在1秒钟时间里传输的图片数量,也可以理解为图形处理器每秒钟能够刷新几次,一般NTSC①是30,PAL②是25,单位FPS 或Hz。它影响画面流畅度,与画面流畅度成正比:帧率越大,画面越流畅;帧率越小,画面越有跳动感。如果码率为变量,则帧率也会影响体积,帧率越高,每秒钟经过的画面越多,需要的码率也越高,体积也越大。
(2)关键帧(key frame):任何动画要表现运动或变化,至少前后要给出两个不同的关键状态,而中间状态的变化和衔接电脑可以自动完成,即表示关键状态的帧叫做关键帧。
(3)过渡帧(interim frame):在两个关键帧之间,电脑自动完成过渡画面的帧叫做过渡帧。
(4)码率(bit rate):视频中比特率又被称为码率,是指码率就是数据传输时单位时间传送的数据位数,单位是kbps即千位每秒(=1000*1bps)。它可以表示经过编码(压缩)后的音、视频数据每秒钟需要用多少个比特来表示,比特率越高,传输数据就越大,音、视频的质量就越好,但编码后的文件就越大。常见的视频码率使用场景:
  * 16kbps:可视电话质量
  * 128-384kbps:视频会议系统质量
  * 1.25Mbps:VCD质量(使用MPEG1压缩)
  * 5Mbps:DVD质量(使用MPEG2压缩)
  * 8-15Mbps:高清晰度电视(HDTV) 质量(使用H.264压缩)
  * 29.4 Mbps:HD DVD质量
  * 40Mbps:蓝光光碟质量(使用MPEG2、H.264或VC-1压缩)
 注意:码率的单位换算与网速的单位换算区别
 1000 bit/s = 1 kbit/s (一千位每秒)          1024B/s = 1KB/s
 1000 kbit/s = 1 Mbit/s (一兆或一百万位每秒) 1024KB/s = 1MB/s
 1000 Mbit/s = 1 Gbit/s (一吉比特或十亿位每秒)  1024MB/s = 1GB/s
(5)清晰度(sharpness):指影像上各细部影纹及其边界的清晰程度。在码率一定的情况下,分辨率与清晰度成反比关系:分辨率越高,图像越不清晰,分辨率越低,图像越清晰。在分辨率一定的情况下,码率与清晰度成正比关系,码率越高,图像越清晰;码率越低,图像越不清晰。
(6)分辨率(resolution ratio):就是屏幕图像的精密度,显示器所能显示的像素的多少。可以把整个图像想象成是一个大型的棋盘,而分辨率的表示方式就是所有经线和纬线交叉点的数目。以分辨率为1024×768的屏幕来说,(即每一条水平线上包含有1024个像素点,共有768条线,总像素1024x768个),即扫描列数为1024列,行数为768行。分辨率影响图像大小,与图像大小成正比:分辨率越高,图像越大;分辨率越低,图像越小。
实例演示:使用MediaCodec将Camera采集图像编码为MP4格式视频

/**
 *@decrible 视频录像,使用MediaRecorder
 *
 * Create by jiangdongguo on 2017-1-6 上午9:27:47
 */
public class VideoRecordRunnable implements Runnable {
    private static final String filePath = Environment
                     .getExternalStorageDirectory().getAbsolutePath()+ File.separator+ System.currentTimeMillis() + ".mp4";
    private MediaRecorder mMediaRecorder;
    private Camera mCamera;
    private SurfaceHolder mHolder;

    public VideoRecordRunnable(Camera mCamera,SurfaceHolder mHolder) {
       this.mCamera = mCamera;
       this.mHolder = mHolder;
    }

    private void initMediaRecorder() {
       if(mMediaRecorder == null){
           mMediaRecorder = new MediaRecorder();
        }else{
           mMediaRecorder.reset();
       }
      //需要调unlock,否则会报异常
      mCamera.unlock();
      mMediaRecorder.setCamera(mCamera);
      mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
      mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
      CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
      mMediaRecorder.setProfile(profile);
      mMediaRecorder.setOutputFile(filePath);
      mMediaRecorder.setPreviewDisplay(mHolder.getSurface());
    }

    @Override
    public void run() {
        initMediaRecorder();
        // 使配置生效
        try {
            mMediaRecorder.prepare();
            mMediaRecorder.start();
        } catch (IllegalStateException e) {
            e.printStackTrace();
            stopMediaRecord();
        } catch (IOException e) {
           e.printStackTrace();
           stopMediaRecord();
        }
    }

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值