2012-06-09 3 views
6

Ho un video nel mio progetto. e per sicurezza crittaggio i file video che sta funzionando abbastanza bene. ma il problema è che ilCome posso riprodurre video da byte in Android

**videoView.setVideoPath("/mnt/sdcard/intro_video.3gp");** 

In questo metodo devo passare il file. (Che viene decifrato) così sto generando file decrittografato su sdcard per il percorso del file è che può passare byte (che sono decrittografato) direttamente nella vista video. Sto usando Cipher per crittografare.

Ecco il mio codice per

private void decryption()throws Exception { 
    // TODO Auto-generated method stub 
    String filePath2 = path + "en/encVideo"; 

    String filePath3 = path + "de/decVideo"; 

    File decfile = new File(filePath3); 


    if(!decfile.exists()) 
     decfile.createNewFile(); 

    File outfile = new File(filePath2); 
    int read; 

    FileInputStream encfis = new FileInputStream(outfile); 
    Cipher decipher = Cipher.getInstance("AES"); 

    decipher.init(Cipher.DECRYPT_MODE, skey); 
    FileOutputStream decfos = new FileOutputStream(decfile); 
    CipherOutputStream cos = new CipherOutputStream(decfos,decipher); 

    while((read=encfis.read()) != -1) 
    { 

     cos.write(read); 
     cos.flush(); 
    } 
    cos.close(); 
} 
+1

Ciao @Youddh, sto cercando una soluzione simile. Puoi condividere il codice funzionante? – user1444172

+2

@ user1444172 scusate come per mia conoscenza non è possibile, quindi creo file in sdcard (con cambio di alcuni byte) quindi mi ricarica nel byte originale per riprodurlo. (Ascolta è la risposta http://stackoverflow.com/questions/ 4576388/cambiando-un-specifico-byte-in-un-file) – Youddh

risposta

0

dubito che si possa fare. Dal momento che stai usando VideoView, richiederebbe intestazioni specifiche e code di coda che suggeriscano quale formato e come sia codificato ecc. Se riesci a capire che dubito ancora che possa prendere file raw. La soluzione migliore sarebbe quella di creare nomi di file casuali durante il salvataggio e il passaggio al giocatore.

+1

ok grazie ma mi piace un'altra opzione per questo, sostituisco solo il byte specifico del video e poi lo scrivo ... ma come si dice devo creare il file. così posso creare file in cattura e poi riprodurlo .. è possibile .. la mia dimensione video è inferiore a 2 mb ... – Youddh

+0

Suppongo che tu possa. Speriamo che qualcun altro risponda. Assicurati di avere il permesso giusto :) – Oasa

3

Se lo streaming del video in una VideoView senza un file intermedio per memorizzare la versione decodificata è quello che stai cercando, la risposta è Sì, puoi farlo. Sono necessari due componenti principali: un server di streaming come un'istanza http locale e CipherInputStream.