4 Stimmen

Schreiben von Videodateien in Java

Ich suche nach einer Möglichkeit, eine Videodatei zu speichern. Ursprünglich hatte ich die Videodateien als Blob-Daten in eine Datenbank gespeichert, und jetzt versuche ich, die Blob-Daten zurückzubekommen, sie in Bytes umzuwandeln und sie dann in eine neue Datei zu schreiben. Das ist mir zwar gelungen, aber das Problem ist, dass ich die resultierenden Dateien nicht zum Laufen bringen kann. Ich habe versucht, .flv- und .mp4-Dateien zu speichern, abzurufen und zu schreiben, aber beides funktioniert nicht :/ Kann mir jemand helfen? Ich wäre Ihnen sehr dankbar! :)

Hier ist mein Code: :)

try {
    Class.forName("com.mysql.jdbc.Driver").newInstance();
    con = DriverManager.getConnection(connectionURL, "root","password");  
    Statement st1 = (Statement) con.createStatement();
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    pstmt = con.prepareStatement("SELECT video_file from video where video_id = " + video_id);
    rs = pstmt.executeQuery();
    Blob blob = null;
    byte[] blyte = null;
    if(rs.next()) {
        blob = rs.getBlob("video_file");
        InputStream is = blob.getBinaryStream();
        FileOutputStream fos = new FileOutputStream("C:\\Downloads\\file2.mp4");
        int b = 0;
        while(b != -1){
            fos.write(b);
            b = bis.read();
        }
    }
//exceptions beyond this point
} catch (InstantiationException e) {
} catch (IllegalAccessException e) {
} catch (ClassNotFoundException e) {
} catch (SQLException e) {
} catch (FileNotFoundException e) {
} catch (IOException e) {
}

2voto

Bartosz Moczulski Punkte 1199

Es gibt ein \0 Byte, das in der ersten Iteration der while-Schleife nach fos geschrieben wird und nicht von bis.read() stammt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X