2012-06-09 15 views
6

Mam wideo w moim projekcie. i dla bezpieczeństwa szyfruję pliki wideo, które działają całkiem nieźle. ale problemem jest to, żeJak mogę odtwarzać wideo z bajtu w Androidzie

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

W tej metodzie mam przekazać plik. (Który rozszyfrował) więc tworzę plik odszyfrowane na sdcard na ścieżce pliku jest to, że można przekazać bajtów (które są odszyfrowane) bezpośrednio w widoku wideo. Używam Cipher do szyfrowania.

Oto mój kod

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

Witam @ Yeouddh, szukam podobnego rozwiązania. Czy możesz udostępnić działający kod? – user1444172

+2

@ user1444172 Przepraszam, że według mojej wiedzy nie jest to możliwe, więc tworzę plik w sdcard (ze zmianą niektórych bajtów), a następnie ładuję do oryginalnego bajtu, aby go odtworzyć. (Odpowiedź brzmi: http://stackoverflow.com/questions/ 4576388/change-a-specific-byte-in-a-file) – Youddh

Odpowiedz

0

wątpię można to zrobić. Ponieważ używasz VideoView, wymagałoby to specyficznych nagłówków i końcówek, które sugerują jaki format i jak jest kodowany itp. Jeśli możesz zrozumieć, że wciąż wątpię, to może wziąć surowy plik. Najlepszym rozwiązaniem byłoby utworzenie losowych nazw plików podczas zapisywania i przekazywania tego graczowi.

+1

OK, dziękuję, ale lubię inną opcję, po prostu zastępuję konkretny bajt wideo, a następnie go piszę ... ale tak jak mówisz, muszę utworzyć plik. więc mogę utworzyć plik w catch, a następnie go odtworzyć .. jest to możliwe .. mój rozmiar wideo jest mniejsza niż 2 mb ... – Youddh

+0

Przypuszczam, że możesz. Miejmy nadzieję, że ktoś inny odpowie. Upewnij się, że masz odpowiednie uprawnienia :) – Oasa

3

Jeśli przesyłanie strumieniowe wideo do VideoView bez pliku pośrednika do przechowywania odszyfrowanej wersji jest tym, czego szukasz, to odpowiedź brzmi Tak, możesz to zrobić. Potrzebne są dwa główne komponenty: serwer przesyłania strumieniowego, taki jak lokalna instancja http i CipherInputStream.

Powiązane problemy