开发者社区 问答 正文

关于Android 限制和获取摄像的时长的问题

Android 如何去限制和获取摄像的时长,并且怎么获取视频的第一帧

展开
收起
爵霸 2016-03-18 13:39:38 2759 分享 版权
1 条回答
写回答
取消 提交回答
  • 开启视频录制,需要创建一个MediaRecorder对象,并调用Camera::unLock操作解锁摄像头,因为默认Camera都是锁定的,只有解锁后MediaRecorder等多媒体进程调用,并设置一些参数,然后调用MediaRecorder:: start开启录制具体可以参阅如下代码:

    
    MediaRecorder mMediaRecorder = new MediaRecorder();
    
    // Unlock the camera object before passing it to media recorder.
    
    camera.unlock();
    
    mMediaRecorder.setCamera(camera);
    
    mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
    
    mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    
    mMediaRecorder.setProfile(mProfile);
    
    mMediaRecorder.setMaxDuration(100000);//ms为单位
    
    long dateTaken = System.currentTimeMillis();
    
    Date date = new Date(dateTaken);
    
    SimpleDateFormat dateFormat = new SimpleDateFormat(getString(R.string.video_file_name_format));
    
    String title = dateFormat.format(date);
    
    String filename = title + ".3gp"; // Used when emailing.
    
    String cameraDirPath = ImageManager.CAMERA_IMAGE_BUCKET_NAME;
    
    String filePath = cameraDirPath + "/" + filename;
    
    File cameraDir = new File(cameraDirPath);
    
    cameraDir.mkdirs();
    
    mMediaRecorder.setOutputFile(filePath);
    
    try {
    
    mMediaRecorder.prepare();
    
    mMediaRecorder.start(); // Recording is now started
    
    } catch (RuntimeException e) {
    
    Log.e(TAG, "Could not start media recorder. ", e);
    
    return;
    
    }

    上面设置了最大间隔为100s,当100是视频录制结束,录制就会被停止,如果没有设时长和文件大小限制,那么通常需要调用MediaRecorder:: stop函数主动停止视频的录制,并将Camera对象通过lock函数继续加锁,示例代码如下

    mMediaRecorder.stop();
    
    mMediaRecorder.reset();
    
    mMediaRecorder.release();
    
    mMediaRecorder = null;
    
    if(camera != null)
    
    camera.lock();
    
    2019-07-17 19:06:28
    赞同 展开评论
问答分类:
问答标签:
问答地址: