8

In Android ist es möglich, einen kurzen Clip (zB: willkürliche 5-10 Sekunden im Video) von einer Video-URL (zB: http://www.test.com/video.mp4) aufzunehmen)Wie man einen Clip von einer Video-URL in Android aufnimmt und aufnimmt und auf dem Telefon speichert

Zum Beispiel möchte ich ein Video (von der URL) in einer Aktivität streamen und die Fähigkeit erlauben, einen kurzen Clip davon aufzunehmen/aufzunehmen. Vielleicht erlauben Sie dem Benutzer, eine beliebige Start-/Endzeit aus dem Video aufzunehmen. Wenn ja, gibt es eine API, um dies zu erreichen? Wenn nicht, gibt es eine Android-Bibliothek, die dies unterstützt?

Bitte geben Sie eine Beispielcodelösung dafür an.

+0

Was bedeutet "einen kurzen Clip aufnehmen ... von einer Video-URL"? – CommonsWare

+0

Entschuldigung, ich habe den ursprünglichen Beitrag zur Klärung aktualisiert. – codeshark

+0

@ Android-Benutzer, darf ich Sie bitten, meine Antwort zu akzeptieren, wenn es Ihr Problem gelöst hat? –

Antwort

1

Ich denke, Sie suchen nach android.media.projection Bibliothek. Hier ist ein Link zu einem Beispiel dafür, wie es zu benutzen: MediaProjectionDemo

Wenn Sie hier auf dieser Bibliothek android Dokumentation zu wollen ist ein link

Hier ist ein issue tracker, die Sie vielleicht auch folgen der Aufnahme von Video Erwähnen und audo gleichzeitig.

4

Sie können this Link sehen. Kurz gesagt, Ihr Server muss das Herunterladen unterstützen. Wenn dies der Fall ist, können Sie den folgenden Code versuchen:

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

Wenn der Server das Herunterladen nicht unterstützt, gibt es nichts, was Sie tun können.

+0

Danke Kiril. Wie kann ich die Sekunden im Video angeben? Zum Beispiel, sagen wir, ich möchte nur 5 Sekunden in der Mitte des Videos speichern? – codeshark

+0

Danke @Kiril – codeshark

+0

Ich bin mir nicht sicher, dass Sie das tun können. Ich bin nicht vertraut mit einem bestimmten HTTP-Header, der Ihnen solche Fähigkeiten zur Verfügung stellen kann. Sie können einen bestimmten Datenbereich herunterladen, müssen jedoch die Beziehung zwischen Qualität und Größe für jedes Video ermitteln. –

Verwandte Themen