android 10 MediaRecorder录像成mp4文件,视频添加时间水印的实现方式
时间: 2023-11-27 18:54:09 浏览: 150
Android使用MediaRecorder实现录像功能
要在 Android 10 上使用 MediaRecorder 录像并添加时间水印,您可以采用以下步骤:
1. 使用 SurfaceView 或 TextureView 显示相机预览。
2. 在录制视频之前,在您的视图上绘制时间水印(可以使用 Canvas.drawText() 方法)。
3. 初始化 MediaRecorder,设置音频和视频源以及输出格式和文件路径。
4. 在开始录制之前,使用 MediaRecorder.setPreviewDisplay() 将 SurfaceView 或 TextureView 绑定到 MediaRecorder。
5. 开始录制视频。
6. 在录制过程中,使用 SurfaceView 或 TextureView 的 draw() 方法更新时间水印。
7. 停止录制视频。
下面是一个伪代码示例:
```java
// 初始化 MediaRecorder
MediaRecorder mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setOutputFile(outputFilePath);
mediaRecorder.setVideoEncodingBitRate(10000000);
mediaRecorder.setVideoFrameRate(30);
mediaRecorder.setVideoSize(videoWidth, videoHeight);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
// 绑定 SurfaceView 或 TextureView
SurfaceView surfaceView = findViewById(R.id.surface_view);
mediaRecorder.setPreviewDisplay(surfaceView.getHolder().getSurface());
// 准备录制
mediaRecorder.prepare();
mediaRecorder.start();
// 在录制期间更新水印
Canvas canvas = surfaceView.getHolder().lockCanvas();
canvas.drawText("当前时间", x, y, paint);
surfaceView.getHolder().unlockCanvasAndPost(canvas);
// 停止录制
mediaRecorder.stop();
mediaRecorder.release();
```
请注意,由于 Android 10 引入了一些限制,如存储访问框架(SAF)和后台运行限制,您可能需要适当处理文件访问和后台任务。
阅读全文