一种视频录制时,类似监控视频中加入动态时间标记的装置

我们经常在使用视频录制时,动态添加像监控画面一样的精确到秒的时间信息,需要记录当前时间到视频中去,这样的需求很常见。今天使用Java代码来实现,通常来说这种用C/C++更高效。如使用FFmpeg的filter功能可以很快实现。下图是网上找的一张监控视频画面。那么我们在录制视频时实现类似功能:

在使用Java代码实现时,需要使用视频录制(MediaRecorder)类,状态周期图如下:

最终效果视频:

class="video_iframe" data-vidtype="2" allowfullscreen="" frameborder="0" data-ratio="0.5666666666666667" data-w="272" data-src="http://v.qq.com/iframe/player.html?vid=z1334nqtq77&width=638&height=478.5&auto=0" style="display: none; width: 638px !important; height: 478.5px !important;" width="638" height="478.5" data-vh="478.5" data-vw="638"/>


下面是实现的一些步骤

1、使用MediaRecord录制一段视频。

   private void startRecorder() {
       if (mState == State.RECORDE) {
           return;
       }
       if (mState == State.COMPLETE) {
           mCamera.startPreview();//重拍启动预览,这里主要启动对焦程序,如果不启动,则manager不知道已经启动,在stop的时候不会关闭预览
       }
       // 关闭预览并释放资源
       Camera c = mCamera;
       c.unlock();
       mRecorder = new MediaRecorder();
       mRecorder.reset();
       mRecorder.setCamera(c);
       mRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
       mRecorder.setProfile(CamcorderProfile.get(mQuality));
       //设置选择角度,顺时针方向,因为默认是逆向度的,这样图像就是正常显示了,这里设置的是观看保存后的视频的角度
       mRecorder.setOrientationHint(90);
       videoCreateTime = System.currentTimeMillis();
       Log.d(TAG, "video cache path:" + fileCachePath);
       try {
           File file = new File(fileCachePath);
           if (!file.getParentFile().exists()) file.getParentFile().mkdirs();
           if (file.exists()) file.delete();
           file.createNewFile();
           mRecorder.setOutputFile(file.getAbsolutePath());
       } catch (IOException e) {
           e.printStackTrace();
       }
       try {

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值