Запись видео с VideoView - PullRequest
       72

Запись видео с VideoView

15 голосов
/ 01 февраля 2012

В настоящее время делаю проект в прямом эфире, и мне удается воспроизвести живое видео.Теперь моя следующая задача - записать видео, которое воспроизводится в VideoView.Я искал, смог найти захват видео, но с поверхности (камеры), но здесь, в VideoView, у меня нет никакой поверхности.

любая помощь оценена

Ответы [ 2 ]

3 голосов
/ 09 июня 2015

Вы можете использовать инструменты платформы и записывать видео, используя:

adb shell screenrecord --verbose /sdcard/demo.mp4

Замените Demo на любое имя файла. Также это будет размещено на вашем телефоне, и по умолчанию я считаю 6 минут. Проверьте параметры записи экрана.

Чтобы вытащить файл на компьютер .... (используйте следующую команду или используйте Android Device Monitor

adb pull /sdcard/demo.mp4

Я использовал это для записи демо-приложений и даже играл на YouTube, и он записал это. У него нет звука, так что это может быть серьезной проблемой. Но это включено в SDK, и записывает любой экран, показывающий во время записи.

3 голосов
/ 09 июня 2015

Вы можете увидеть эту ссылку.Короче говоря, ваш сервер должен поддерживать загрузку.Если это так, вы можете попробовать следующий код:

private final int TIMEOUT_CONNECTION = 5000; //5sec
private final int TIMEOUT_SOCKET = 30000; //30sec
private final int BUFFER_SIZE = 1024 * 5; // 5MB

private final int TIMEOUT_CONNECTION = 5000; //5sec
private final int TIMEOUT_SOCKET = 30000; //30sec
private final int BUFFER_SIZE = 1024 * 5; // 5MB

try {
  URL url = new URL("http://....");

  //Open a connection to that URL.
  URLConnection ucon = url.openConnection();
  ucon.setReadTimeout(TIMEOUT_CONNECTION);
  ucon.setConnectTimeout(TIMEOUT_SOCKET);

  // Define InputStreams to read from the URLConnection.
  // uses 5KB download buffer
  InputStream is = ucon.getInputStream();
  BufferedInputStream in = new BufferedInputStream(is, BUFFER_SIZE);
  FileOutputStream out = new FileOutputStream(file);
  byte[] buff = new byte[BUFFER_SIZE];

  int len = 0;
  while ((len = in.read(buff)) != -1)
  {
      out.write(buff,0,len);
  }
} catch (IOException ioe) {
  // Handle the error
} finally {
  if(in != null) {
    try {
      in.close();
    } catch (Exception e) {
      // Nothing you can do
    }
  }
  if(out != null) {
    try {
      out.flush();
      out.close();
    } catch (Exception e) {
      // Nothing you can do
    }
  }
}

Если сервер не поддерживает загрузку, вы ничего не можете сделать.

...