2012-04-19 3 views
0

Я пытаюсь загрузить видеофайл, сохраненный как blob в Mysql. Файл загружается отлично, но он поврежден, я думаю. Форматы для загрузки - ogg, webm n mp3. Проблема в том, что я пытаюсь преобразовать любое видео с помощью ffmpeg, он говорит «неверные данные, найденные во время обработки».Загрузка видеофайла из Mysql DB в java

Я использую следующий код

Blob image = null; 
    Connection con = null; 
    ResultSet rs = null; 
    try{ 
    Class.forName("com.mysql.jdbc.Driver"); 
    con = MySqlConnect.getDBConnection(); 
    String sql = "select videos, filename from sun.videostore where id ='"+fileID+"'"; 
    Statement stmt = con.createStatement(); 
    rs = stmt.executeQuery(sql); 
    while (rs.next()) { 
    String filename = rs.getString("filename"); 
    Blob video = rs.getBlob("videos"); 
    File file1 = new File("C:\\DowloadFile\\" + filename); 
    FileOutputStream foStream = new FileOutputStream(file1); 
    if(video != null){ 
     int length = (int) video.length(); 
     InputStream is2 = video.getBinaryStream(); 
     int b = 0; 
     while(b!=-1){ 
     b=is2.read(); 
     foStream.write(b); 
     } 

    } 

    }   
    }catch(Exception e){ 
    System.out.println("Ecxeption in getting data from DB = "+e); 
    }' 
+0

Я бы проверял frist, если видео также не повреждено в базе данных. Используйте такой инструмент, как MySQL Query Browser, загрузите blob в файл с ним, а затем запустите ffmpeg. – 0xCAFEBABE

+0

Thanx для быстрого ответа .... i wll check tat ... Есть ли необходимость устанавливать кодеки после того, как вы напишите байты в файл в java. Я пробовал этот код, когда видео играло в firefox. Однако не на хром, это еще одна проблема, с которой я столкнулся. – deepika

+0

Кодек обычно входит в заголовок файла. Я сохранял видео, изображения и музыку в базе данных mysql раньше и просто дамп байтов прямо в файл и игру. Не нужно указывать информацию о кодеке после выгрузки файла. Похоже, что файл поврежден перед загрузкой в ​​базу данных, например, @ 0xCAFEBABE. – Namphibian

ответ

1

Нет я проверил свой закачанный файл, он не поврежден .... Я попробовал другой способ загрузки видео в БД.

File video = new File(filename);         
fis = new FileInputStream(video); 
ps.setBinaryStream(2, fis, (int) video.length());//preparedStatement 

Если я загружаю файл выше, я получаю правильный файл при загрузке.

+0

Если он решил вашу проблему. Примите ответ, щелкнув правильный знак. –

Смежные вопросы