2016-05-18 2 views
1

Я пытаюсь записать видео в прямом эфире, которое играет vitamio videoView. прямо сейчас я использую MediaRecorded, но он просто не работает.Как записать live rtsp играл bt VideoView (Vitamio)

как я должен это делать? У меня есть три основных метода записи.

есть ли другой способ записи в прямом эфире?

holder = mVideoView.getHolder(); 
    holder.addCallback(new SurfaceHolder.Callback() { 
     @Override 
     public void surfaceCreated(SurfaceHolder holder) { 
      initRecorder(); 
     } 

    }); 

private void initRecorder() { 
    if (recorder == null) recorder = new MediaRecorder(); 
    recorder.setPreviewDisplay(holder.getSurface()); 
    //recorder.setCamera(mCamera); 

    recorder.setVideoSource(MediaRecorder.VideoSource.SURFACE); 
    //  mrecorder.setOutputFormat(8); 
    recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
    recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); 
    recorder.setVideoEncodingBitRate(512 * 1000); 
    recorder.setVideoFrameRate(25); 
    recorder.setVideoSize(352, 288); 
    recorder.setOutputFile(Utils.getTuracoFolder() + "/video.mp4"); 

    try { 
     recorder.prepare(); 
    } catch (IllegalStateException e) { 
     // This is thrown if the previous calls are not called with the 
     // proper order 
     e.printStackTrace(); 
     TLog.e(TAG, e.getMessage()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
     TLog.e(TAG, e.getMessage()); 
    } 
} 

private void toggleRecording() { 
    if (recorder == null) return; 
    if (recording) { 
     try { 
      recorder.stop(); 
      recorder.reset(); 
      initRecorder(); 
      recording = false; 
      TLog.d(TAG, "Stopped Recording"); 
     } catch (Exception ex) { 
      TLog.d(TAG, "Error - " + ex.getMessage()); 
     } 

    } else { 
     try { 
      recorder.start(); 
     } catch (IllegalStateException e) { 
      TLog.e(TAG, e.getMessage()); 
     } 
     Log.v(TAG, "Recording Started"); 
     recording = true; 
    } 
} 

ответ

0

Я сделал это, но с ffmpeg. поэтому сделайте это, чтобы загрузить потоки m3u8 с помощью ffmpeg.

обновление вы gradle.built

dependencies { 

compile 'com.writingminds:FFmpegAndroid:0.3.2' 

}

сейчас в вас класс активности написать этот

FFmpeg ffmpeg; 

// команда, которая создаст новый файл файл mani.mp4 в корне

String cmdd="-i http://rt-a.akamaihd.net/[email protected]/720p.m3u8 -c:a copy -c:v copy -bsf:a aac_adtstoasc "+ new File(Environment.getExternalStorageDirectory() + "/mani.mp4").getAbsolutePath(); 
String[] cmd = cmdd.split(" "); 


ffmpeg = FFmpeg.getInstance(getApplicationContext()); 

    try { 
     ffmpeg.loadBinary(new LoadBinaryResponseHandler() { 

      @Override 
      public void onStart() {} 

      @Override 
      public void onFailure() {} 

      @Override 
      public void onSuccess() {} 

      @Override 
      public void onFinish() {} 
     }); 

    } catch (FFmpegNotSupportedException e) { 
     // Handle if FFmpeg is not supported by device 

     Log.e("com",e.toString()); 
    } 
try { 
     // to execute "ffmpeg -version" command you just need to pass "-version" 
     ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler() { 

      @Override 
      public void onStart() {} 


      @Override 
      public void onProgress(String message) { 
       // will print information about every new frame it find on given link 
       Log.e("com",message); 

      } 

      @Override 
      public void onFailure(String message) { 
       } 

      @Override 
      public void onSuccess(String message) { 
       } 

      @Override 
      public void onFinish() {} 
     }); 
    } catch (FFmpegCommandAlreadyRunningException e) { 
     // Handle if FFmpeg is already running 

    } 

, чтобы остановить загрузку запустить эту кнопку мыши

ffmpeg.killRunningProcesses(); 

Не забудьте добавить интернет и разрешение на чтение/запись

+0

Я заявляю разрешение в манифесте, и изменить compileSdk до 15, это шоу: Разрешение отказано. – YETI

+0

https://github.com/WritingMinds/ffmpeg-android-java/issues/103 – YETI

+0

разместите свой код Manifest.xml –

Смежные вопросы