android 视频录制 添加文字、时间水印
时间: 2023-11-26 17:03:37 浏览: 219
在 Android 上实现视频录制并添加文字、时间水印,可以通过以下步骤实现:
1.首先,需要使用 MediaRecorder 类录制视频。具体实现方式可以参考 Android 官方文档。
2.录制视频过程中,可以在 SurfaceView 上添加一个 TextView,用于显示时间水印和文字水印。具体实现方式可以参考以下代码:
```
// 创建 SurfaceView 和 TextView
SurfaceView surfaceView = new SurfaceView(context);
TextView textView = new TextView(context);
// 设置 TextView 的位置和样式
textView.setX(100);
textView.setY(100);
textView.setTextColor(Color.WHITE);
textView.setTextSize(20);
// 在 SurfaceView 上添加 TextView
FrameLayout frameLayout = new FrameLayout(context);
frameLayout.addView(surfaceView);
frameLayout.addView(textView);
// 设置 MediaRecorder 的预览 Surface
SurfaceHolder holder = surfaceView.getHolder();
mMediaRecorder.setPreviewDisplay(holder);
// 在录制视频的过程中更新 TextView 的内容
mMediaRecorder.setOnInfoListener(new MediaRecorder.OnInfoListener() {
@Override
public void onInfo(MediaRecorder mr, int what, int extra) {
if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED) {
// 录制结束时的操作
} else if (what == MediaRecorder.MEDIA_RECORDER_INFO_NEXT_OUTPUT_FILE_STARTED) {
// 更新时间水印
textView.setText(getCurrentTime());
}
}
});
// 获取当前时间的方法
private String getCurrentTime() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(new Date());
}
```
3.如果需要在视频上添加文字水印,可以使用 Canvas 在 SurfaceView 上进行绘制。具体实现方式可以参考以下代码:
```
// 在 SurfaceView 上绘制文字
Canvas canvas = holder.lockCanvas();
Paint paint = new Paint();
paint.setColor(Color.WHITE);
paint.setTextSize(20);
canvas.drawText("Hello World!", 100, 100, paint);
holder.unlockCanvasAndPost(canvas);
```
需要注意的是,文字水印的位置和样式需要根据实际需求进行调整。
阅读全文