2017-09-03 6 views
1

Hy everyone. J'essaie d'ajouter un petit logo dans le coin de la vidéo que j'ai enregistrée. J'ai essayé d'ajouter l'imageView directement à la surface d'enregistrement mais ce n'est pas la solution.android camera2 api - Comment puis-je ajouter un logo d'entreprise au fichier vidéo enregistré

Je suppose que je vais devoir créer une autre surface et les fusionner ensemble mais je n'ai pu trouver aucun tutoriel ou échantillon de code pour une telle chose.

J'ai trouvé l'option d'ajouter un dessin au premier plan, mais le logo n'apparaît pas sur la surface de prévisualisation. Voici le code:

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

s'il vous plaît aider. Merci

Répondre

1

Ajout d'une surface séparée affichera simplement le logo pendant que vous le regardez dans votre application - si vous voulez ajouter un logo au fichier afin qu'il puisse être vu si vous partagez ou chargez la vidéo, alors vous besoin de l'ajouter à la vidéo elle-même.

En supposant que vous capturez la vidéo sur votre appareil local, d'une façon que vous pouvez faire est d'utiliser ffmpeg pour ajouter une image à la vidéo - voir cette réponse qui comprend des notes sur la façon de positionner l'image:

Il y a plusieurs façons d'inclure ffmpoeg dans un projet Android, mais peut-être est le plus facile à utiliser un projet d'emballage ffmpeg bien pris en charge comme celui-ci:

Les enveloppes essentiellement constituées d'une interface autour de là ligne de commande outil de ffmpeg, qui a l'avantage que vous pouvez utiliser la même syntaxe - par exemple la syntaxe dans la réponse indiquée ci-dessus, et tirer parti du support et Q & A sur le Web autour d'elle.

L'inconvénient est que l'outil de ligne de commande n'a pas été conçu à l'origine pour être utilisé de cette façon, mais si vous utilisez un wrapper bien supporté, vous trouverez probablement beaucoup de problèmes ont été aplanies. Une chose à noter - le traitement vidéo a un processeur assez élevé et, par conséquent, les besoins en batterie d'un appareil mobile. Si vous voulez télécharger la vidéo sur un serveur pour la partager, il peut être plus judicieux d'ajouter l'image là où vous avez le plus de puissance CPU.

+0

merci beaucoup. Je vais vérifier –