2015-02-05 11 views
6

Ich verwende ExoPlayer, um Mediendateien (mp4s .h264-kodiert) von der SD-Karte eines Geräts abzuspielen. Einige der Dateien sind DES-verschlüsselt. Ich kann die Dateien entschlüsseln und einen inputStream zurückbekommen, aber dann bin ich unsicher, wie ich diesen inputStream mit ExoPlayer spielen soll. Jede Hilfe wäre willkommen.Wie kann ich eine DES-verschlüsselte Datei mit ExoPlayer wiedergeben?

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 sollte in eine temporäre Datei geschrieben werden, die vom ExoPlayer tatsächlich abgespielt wird. Ich versuche das gleiche, aber das Problem ist, dass es viel Zeit braucht, um File zu entschlüsseln. Haben Sie eine Lösung gefunden, InputStream selbst an Exo zu übergeben? –

+0

Ich habe nie eine Lösung gefunden. Wir haben die Verschlüsselung auf der gesamten SD-Karte implementiert, wenn sie mit encfs gemountet/abgehängt wird. Ich möchte das immer noch herausfinden, weil ich glaube, dass es Teil einer besseren Lösung ist, aber keine Zeit hatte, sich wirklich weiter damit zu befassen. –

Antwort

1

Sie können eine benutzerdefinierte Datasource schreiben, die einen Inputstream übernimmt: für Datasource, die Sie gerade geöffnet implementieren (DataSpec), close(), und lesen (byte [] buffer, int offset, int readLength). Es erstaunt mich, dass es im ExoPlayer noch keine Implementierung gibt. Es scheint wie eine offensichtliche Klinge für ihr Schweizer Armeemesser.

+0

Es gab Implementierung, aber sie haben es versteckt https://github.com/google/ExoPlayer/blob/master/library/src/main/java/com/google/android/exoplayer/hls/Aes128DataSource.java –

+0

@RogerAlien Link gebrochen –

+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 –

Verwandte Themen