大家好 我正在尝试在录制的视频的角落添加一个小徽标。我试图将imageView直接添加到记录表面,但这不是解决方案。
我猜我将不得不创建另一个表面并将它们合并在一起,但是我找不到此类的任何教程或代码示例。
我找到了添加前景可绘制对象的选项,但是它没有在预览表面上显示徽标。这是代码:
private void startRecording(){
try {
setupMediaRecorder();
mTextureView.setForeground(getDrawable(R.drawable.toolbarlogo));
SurfaceTexture surfaceTexture = mTextureView.getSurfaceTexture();
surfaceTexture.setDefaultBufferSize(mPreviewSize.getWidth(),mPreviewSize.getHeight());
Surface previewSurfice = new Surface(surfaceTexture);
Surface recordSurface = mMediaRecorder.getSurface();
mPreviewCaptureRequestBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);
mPreviewCaptureRequestBuilder.addTarget(previewSurfice);
mPreviewCaptureRequestBuilder.addTarget(recordSurface);
mCameraDevice.createCaptureSession(Arrays.asList(previewSurfice, recordSurface), new CameraCaptureSession.StateCallback() {
@Override
public void onConfigured(@NonNull CameraCaptureSession session) {
try {
session.setRepeatingRequest(
mPreviewCaptureRequestBuilder.build(),null,null
);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
@Override
public void onConfigureFailed(@NonNull CameraCaptureSession session) {
}
},null);
} catch (Exception e) {
e.printStackTrace();
}
}
请帮忙。谢谢
添加单独的表面只会在您在应用程序中查看徽标时显示徽标-如果要将徽标添加到文件中,以便在共享或加载视频时可以查看徽标,则需要将徽标添加到视频本身。
假设您将视频捕获到本地设备,那么执行此操作的一种方法是使用ffmpeg将图像添加到视频中-请参阅以下答案,其中包括有关如何放置图像的说明:
有几种方法可以将ffmpoeg包含在Android项目中,但也许最简单的方法是使用受支持的ffmpeg包装器项目,如下所示:
包装器基本上在命令行ffmpeg工具周围包装了一个接口,它的优点是您可以使用相同的语法-例如,上面提到的答案中的语法,并利用它周围的Web上的支持和Q&A。
缺点是命令行工具最初并不是设计用于这种方式的,但如果使用受良好支持的包装程序,您可能会发现许多问题已得到解决。
需要注意的一件事-视频处理具有很高的CPU,因此在移动设备上需要电池。如果您要将视频上传到服务器以共享它,则在具有更多CPU能力的位置添加图像可能更有意义。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句