android camera2 api - 如何在录制的视频文件中添加公司徽标

android camera2 api - How can i add a company logo to the recorded video file

大家好。 我想在我录制的视频的角落里添加一个小标志。我尝试将 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 工具包装了一个接口,其优点是您可以使用相同的语法 - 例如上面提到的答案中的语法,并利用网络上围绕它的支持和问答。

缺点是命令行工具最初并非设计为以这种方式使用,但如果您使用支持良好的包装器,您可能会发现很多问题都已解决。

需要注意一件事 - 视频处理非常高 CPU,因此对移动设备的电池要求很高。如果您要将视频上传到服务器进行共享,将图像添加到此处可能更有意义,因为您有更多 CPU 马力。