Wie lese ich in Java eine mp4-Datei ein und speichere sie an anderer Stelle?

3 Antworten

Z.b. indem du das Video im Workingdirectory der Anwendung ablegst und dann auch so wieder einbindest.

Woher ich das weiß:eigene Erfahrung – Ich habe selber lange im PC gearbeitet

InfoStudentDE 
Beitragsersteller
 13.06.2018, 16:40

Und wie genau? Es liegt schon am richtigen Ort, das ist nicht mein Problem, aber wie kann ich innerhalb von Java mp4 Dateien lesen und schreiben? Bei Bildern kann ich ja mit BufferedImages und ImageIO arbeiten, aber was ist mit Videos?

0
ZaoDaDong  13.06.2018, 16:44
@InfoStudentDE

Da wirds sicherlich auch Bibliotheken für geben. Ich würde an deiner Stelle lieber externe Tools für die Wiedergabe einbinden, z.b. mit Java Media Framework

0
InfoStudentDE 
Beitragsersteller
 13.06.2018, 16:49
@ZaoDaDong

Von der Wiedergabe hab ich mich jetzt sowieso verabschiedet. Ich möchte nur, dass das Video quasi aus dem Programm rausgeholt werden kann und woanders hin kopiert werden kann (wo auch immer man das eben hin haben möchte)

0
ZaoDaDong  13.06.2018, 16:54
@InfoStudentDE

Das kannst du doch nativ mit Java machen. Das Video, wie jede andere Datei auch, kopieren, zb. mit der Files klasse (java7+). .

0
InfoStudentDE 
Beitragsersteller
 13.06.2018, 17:08
@ZaoDaDong

OK, habs jetzt, vielen Dank. Stand da irgendwie auf dem Schlauch, hab schon länger nicht mehr damit gearbeitet ^^

0

Du öffnest das mp4 zum Lesen und die neu zu erstellende Datei zum schreiben, dann kopierst Du die Datei und schließt beide Dateien... fertig !!!

z.B. so:

  public static void copyFile(File in, File out) throws IOException { 
        FileChannel inChannel = null; 
        FileChannel outChannel = null; 
        try { 
            inChannel = new FileInputStream(in).getChannel(); 
            outChannel = new FileOutputStream(out).getChannel(); 
            inChannel.transferTo(0, inChannel.size(), outChannel); 
        } catch (IOException e) { 
            throw e; 
        } finally { 
            try { 
                if (inChannel != null) 
                    inChannel.close(); 
                if (outChannel != null) 
                    outChannel.close(); 
            } catch (IOException e) {} 
        } 
    }

dann kannst Du die Funktion so verwenden:

       File inF = new File("/home/user/movie.mp4"); 
       File outF = new File("/new/folder/movie.mp4"); 
       copyFile(inF, outF); 
zumindest habe ich es nicht hinbekommen das Video nativ in einem JFrame abspielen zu können

Dafür ist JavaFX auch besser geeignet.

Meine Frage ist jetzt aber, wie ich das Video, dass im Resource Ordner liegt, in eine Datei bekomme, die ich dann wiederum mit dem JFileChooser woanders ablegen kann?

Dank Java NIO geht das ziemlich einfach: https://docs.oracle.com/javase/10/docs/api/java/nio/file/Files.html#copy(java.io.InputStream,java.nio.file.Path,java.nio.file.CopyOption...)

Files.copy(getClass().getResourceAsStream("<Resource>"), Paths.get("video.mp4"));