android视频录制添加时间水印
时间: 2023-10-23 09:08:31 浏览: 182
要在 Android 视频录制中添加时间水印,可以使用 MediaRecorder 类来实现。具体步骤如下:
1.在布局文件中添加 SurfaceView 控件,用于预览录制的视频。
2.在代码中获取 SurfaceHolder 对象,并将其设置为 MediaRecorder 的预览界面。
3.设置 MediaRecorder 的视频来源、输出格式、输出路径等参数。
4.使用 MediaRecorder.start() 方法开始录制视频。
5.在视频录制的过程中,利用 Canvas 绘制时间水印,并将绘制后的图像添加到视频帧中。
6.使用 MediaRecorder.stop() 方法停止录制视频。
以下是添加时间水印的示例代码:
```
private MediaRecorder mMediaRecorder;
private SurfaceHolder mSurfaceHolder;
private void initMediaRecorder() {
mMediaRecorder = new MediaRecorder();
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
mMediaRecorder.setVideoSize(640, 480);
mMediaRecorder.setVideoFrameRate(30);
mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());
mMediaRecorder.setOutputFile(getOutputMediaFile().toString());
}
private void startRecording() {
mMediaRecorder.start();
new Thread(new Runnable() {
@Override
public void run() {
while (isRecording) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
addTimeWatermark();
}
}
}).start();
}
private void addTimeWatermark() {
Bitmap bmp = Bitmap.createBitmap(640, 480, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
canvas.drawText(getCurrentTime(), 10, 10, new Paint());
canvas.save();
try {
FileOutputStream fos = new FileOutputStream(getOutputMediaFile());
bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private String getCurrentTime() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(new Date());
}
```
需要注意的是,在绘制时间水印时,要在一个新的线程中进行,以免阻塞视频录制过程。同时,要在 MediaRecorder.stop() 方法被调用时,关闭线程,释放资源。
阅读全文