0

СценарийЗапись фрагмента или вид, видео выход

У меня есть (в ImageView и VideoView) или (что-то на заказ вроде SurfaceView и внутри фото слева и справа имеется видео) внутри фрагмента, и мне нужно вывести компоновку фрагмента как видео, присоединиться к фотографии и видео в одно видео.

Вопрос

Я действительно не знаю, как сделать эту работу, может записывать экран, но не профессиональный. Возможно ты можешь помочь мне ? Некоторые учебные пособия, идеи или что-то будет хорошим.

Спасибо.

+0

Хм .. как вы можете видеть, мне не нужен экранный рекордер. – AndroidGorilllla

+0

Мне нужно найти способ сделать видео с фото и видео. – AndroidGorilllla

+1

вы можете использовать библиотеку ffmpeg для этого –

ответ

1

Хотя this не для фрагментов, это вам поможет. Вы можете сделать видео с текстурой OpenGLES по API 5.0.

или сделать сервис записи экрана. как это,

public boolean startRecord(MediaProjection mediaProjection, File file) { 

    mRecorder = new MediaRecorder(); 
    mRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE); 
    mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
    mRecorder.setAudioSource(MediaRecorder.AudioSource..DEFAULT); 
    mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); 
    mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); 
    mRecorder.setOutputFile(file.getPath()); 
    mRecorder.setMaxDuration(60000); 
    mRecorder.setVideoSize(720,1280); 

    try { 
     mRecorder.prepare(); 
     mMediaProjection = mediaProjection; 
     Surface targetSurface = mRecorder.getSurface(); 
     mDisplay = mMediaProjection.createVirtualDisplay("ScreenRecorder", 720, 1280, 240, 
       DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR, targetSurface, null, null); 

     mRecorder.start(); 
     mRecording = true; 
     showNotification(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
     return false; 
    } 

    return true; 
} 

получить MediaProjection активности

{ 
     btnStartRecording.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = mMediaProjectionManager.createScreenCaptureIntent(); 
       startActivityForResult(intent, REQUEST_CODE_SCREEN_CAST); 
      } 
     }); 
} 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == REQUEST_CODE_SCREEN_CAST) { 
      if (resultCode != RESULT_OK) { 
       Toast.makeText(this, "Permission denied, close this app", Toast.LENGTH_SHORT).show(); 
       finish(); 
      } 
      mMediaProjection = mMediaProjectionManager.getMediaProjection(resultCode, data); 
      if (mMediaProjection == null) { 
       return; 
      } 
      File moviesFolder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES); 
      File movieFile = new File(moviesFolder, "test.mp4"); 
      if (mService != null) { 
       mService.startRecord(mMediaProjection, movieFile); 
      } 
      else{ 
       mMediaProjection.stop(); 
      } 
     } else { 
      super.onActivityResult(requestCode, resultCode, data); 
     } 
    } 

Вы можете записывать все на дисплее.