8

В Android можно записать короткий клип (например: произвольное 5-10 секунд в видео) с URL-адреса видео (например: http://www.test.com/video.mp4)?Как захватить/записать видеоклип из URL видео в Android и сохранить на телефон

Например, я хотел бы передать видео (из url) в Activity и разрешить возможность захвата/записи короткого клипа из него. Возможно, разрешите пользователю записывать произвольное время начала/окончания видео. Если да, существует ли API для этого? Если нет, есть ли библиотека Android для поддержки этого?

Просьба предоставить пример кода для этого решения.

+0

Что означает «запись короткого клипа ... с URL-адреса видео»? – CommonsWare

+0

Извините, я обновил исходное сообщение, чтобы уточнить. – codeshark

+0

@ android-user, могу я попросить вас принять мой ответ, если он решит вашу проблему? –

ответ

1

Я думаю, что вы ищете android.media.projection библиотеки. Вот ссылка на пример того, как использовать его: MediaProjectionDemo

Если вы хотели документации андроида на этой библиотеке здесь является link

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

4

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

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 
    } 
    } 
} 

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

+0

Спасибо Кирилл. Как указать секунды в видео? Например, скажем, я хочу сохранить только 5 секунд в середине видео? – codeshark

+0

Спасибо @Kiril – codeshark

+0

Я не уверен, что вы можете это сделать. Я не знаком с определенным HTTP-заголовком, который может предоставить вам такую ​​возможность. Вы можете загрузить определенный диапазон данных, но вам нужно найти соотношение между качеством и размером для каждого видео. –