2017-09-03 158 views
1

Hy everyone。 我想在我錄製的視頻的角落添加一個小徽標。我試圖將imageView直接添加到錄製表面,但它不是解決方案。android camera2 api - 如何將公司徽標添加到錄製的視頻文件

我想我將不得不創建另一個表面並將它們合併在一起,但我找不到任何教程或代碼示例這樣的事情。

我找到了添加前景繪製選項的選項,但它並未在預覽表面上顯示徽標。 這是代碼:

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(); 
    } 
} 

請大家幫忙。 謝謝

回答

1

添加一個單獨的表面只會顯示徽標,而您正在您的應用程序中查看它 - 如果您要將徽標添加到文件中,以便在共享或加載視頻時查看它,那麼您需要將其添加到視頻本身。

假設你捕獲視頻到本地設備,那麼你就可以做到這一點的方法之一是使用的ffmpeg將圖像添加到視頻 - 看到這個答案,其中包括有關如何將圖像位置注意:

有幾種方法,包括在Android項目ffmpoeg,但也許最簡單的就是使用一個很好的支持的ffmpeg包裝項目像這樣的:

的包裝基本上環繞有命令行的ffmpeg工具,其具有可以使用相同的語法的優點的接口 - 例如上述答案中的語法,並在其周圍的網絡上利用支持和Q & A.

缺點是命令行工具最初並不是用於這種方式,但如果使用良好的支持包裝,您可能會發現很多問題已經被解決。

有一點需要注意 - 視頻處理在移動設備上具有相當高的CPU和電池需求。如果您要將視頻上傳到服務器以共享視頻,則在此處添加具有更多CPU功率的圖像可能更有意義。

+0

非常感謝。 我會檢查它 –

相關問題