2015-02-05 23 views
6

Używam ExoPlayera do odtwarzania plików multimedialnych (kodowane mp4s .h264) z karty SD urządzenia. Niektóre pliki są szyfrowane DES. Mogę odszyfrować pliki i odzyskać inputStream, ale nie jestem pewien, jak odtwarzać ten inputStream przy użyciu ExoPlayera. Każda pomoc będzie doceniona.Jak odtwarzać plik zaszyfrowany DES za pomocą ExoPlayera

protected void playVideo(File file) { 
     InputStream is; 
     if (file.getName().endsWith(".DES")) { 
      is = FileManager.decryptFile(file); 
      //what to do with this input stream? 
     } 

     Uri uri = Uri.parse(file.getAbsolutePath()); 

     if (mPlayer != null) { 
      mPlayer.release(); 
     } 

     mPlayer = new VideoPlayer(getRendererBuilder(uri)); 
     mPlayer.addListener(this); 
     if (mLastPosition > 0) { 
      mPlayer.seekTo(mLastPosition); 
     } 

     mPlayer.prepare(); 
     mPlayer.setSurface(mSurface); 
     mPlayer.setPlayWhenReady(true); 
    } 
+0

InputStream należy zapisać w pliku tymczasowym, który będzie faktycznie odtwarzany przez ExoPlayer. Próbuję tego samego, ale problem polega na tym, że odszyfrowanie pliku zajmuje dużo czasu. Czy znalazłeś rozwiązanie do przekazania samego InputStream do Exo? –

+0

Nigdy nie znalazłem rozwiązania tego problemu. Zaimplementowaliśmy szyfrowanie na całej karcie SD po jej zamontowaniu/odmontowaniu za pomocą encfów. Nadal chciałbym to zrozumieć, ponieważ uważam, że jest to część lepszego rozwiązania, ale nie miałem czasu, aby naprawdę zagłębić się w to. –

Odpowiedz

1

Możesz napisać własny DataSource który akceptuje InputStream: dla źródła danych, wystarczy wdrożyć otwarty (DataSpec), close() i read (byte [] bufor, int offset, int readLength). Zadziwia mnie to, że w ExoPlayerze nie ma już żadnej implementacji. Wydawałoby się to oczywistym ostrzem dla ich szwajcarskiego scyzoryka.

+0

Było wdrożenie, ale ukryli to https://github.com/google/ExoPlayer/blob/master/library/src/main/java/com/google/android/exoplayer/hls/Aes128DataSource.java –

+0

Link @RogerAlien zerwana –

+1

@AdamW https://gist.github.com/AlienAsRoger/a0011d246d83c3823d73fcc5bb6a44d6 http://www.programcreek.com/java-api-examples/index.php?source_dir=ExoPlayer-master/library/src/main /java/com/google/android/exoplayer/hls/Aes128DataSource.java –