8

Czy w Androidzie można nagrać krótki klip (np. Dowolne 5-10 sekund w filmie) z adresu URL filmu wideo (np. http://www.test.com/video.mp4)?Jak przechwytywać/nagrywać klip z adresu URL filmu w Androidzie i zapisać na telefonie

Na przykład, chciałbym przesłać wideo (z adresu URL) do działania i zezwolić mu na przechwytywanie/nagrywanie krótkiego klipu. Być może pozwól użytkownikowi nagrać dowolny czas rozpoczęcia/zakończenia z filmu. Jeśli tak, czy istnieje API, aby to osiągnąć? Jeśli nie, czy istnieje biblioteka Androida, która to obsługuje?

Proszę podać przykładowy kod dla tego rozwiązania.

+0

Co oznacza "nagrywanie krótkiego klipu ... z adresu URL filmu wideo"? – CommonsWare

+0

Przepraszamy, zaktualizowałem oryginalny wpis, aby wyjaśnić. – codeshark

+0

@ użytkownik android, czy mogę poprosić o zaakceptowanie mojej odpowiedzi, jeśli rozwiąże ona Twój problem? –

Odpowiedz

1

Myślę, że szukasz biblioteki android.media.projection. Tu jest link do przykładu dla jak go używać: MediaProjectionDemo

Jeśli chcą dokumentacji Androida w tej bibliotece Oto link

tutaj jest issue tracker że może chcesz śledzić również wspomnieć, nagrywanie wideo i audo w tym samym czasie.

4

Możesz zobaczyć link this. W skrócie twój serwer musi wspierać pobieranie. Jeśli tak, możesz wypróbować następujący kod:

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

Jeśli serwer nie obsługuje pobierania, nic nie możesz zrobić.

+0

Dziękuję Kiril. Jak mogę określić sekundy w filmie? Na przykład powiedzmy, że chcę zapisać tylko 5 sekund w środku wideo? – codeshark

+0

Dziękujemy @Kiril – codeshark

+0

Nie jestem pewien, czy możesz to zrobić. Nie jestem zaznajomiony z pewnym nagłówkiem HTTP, który może zapewnić taką możliwość. Możesz pobrać określony zakres danych, ale musisz znaleźć związek między jakością i wielkością każdego filmu. –

Powiązane problemy