Мое требование - воспроизводить зашифрованные hls
видеофайлы из локального хранилища в android
.Я использовал NanoHTTPD
для создания и запуска локального сервера.Оттуда я подаю .ts
и .m3u8
файлы.Для воспроизведения этого видео ExoPlayer
нужен ключ для расшифровки файлов, и поэтому я сделал URL: http://localhost:4990/dataKey.
Вот мой класс локального сервера:
import android.os.Environment;
import android.util.Log;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Map;
import fi.iki.elonen.NanoHTTPD;
public class LocalStreamingServer extends NanoHTTPD{
public LocalStreamingServer(int port){
super(port);
}
@Override
public Response serve(IHTTPSession session){
Log.e("req", session.getUri());
if(session.getUri().equalsIgnoreCase("/dataKey")){
return newFixedLengthResponse(Response.Status.OK, "txt", "what is the key?");
}
if(session.getUri().contains("m3u8")){
String path = Environment.getExternalStorageDirectory().toString() + "/s3" + session.getUri();
FileInputStream fis = null;
File f = new File(path);
try {
fis = new FileInputStream(f);
} catch (FileNotFoundException e) {
}
return newFixedLengthResponse(Response.Status.OK, "m3u8", fis, f.length());
}
if(session.getUri().endsWith("ts")){
String path = Environment.getExternalStorageDirectory().toString() + "/s3" + session.getUri();
FileInputStream fis = null;
File f = new File(path);
try {
fis = new FileInputStream(f);
} catch (FileNotFoundException e) {
}
return newFixedLengthResponse(Response.Status.OK, "ts", fis, f.length());
}
String path = Environment.getExternalStorageDirectory().toString() + "/s3/master.m3u8";
FileInputStream fis = null;
File f = new File(path);
try {
fis = new FileInputStream(f);
} catch (FileNotFoundException e) {
}
return newFixedLengthResponse(Response.Status.OK, "m3u8", fis, f.length());
}
}
Iперекодировали видео используя ffmpeg
.Мне нужно знать, какие данные или ключ должны быть возвращены при вызове url dataKey.Я зашифровал видео с помощью этих ключей:
key=617D8A125A284DF48E3C6B1866348A3F
IV=5ff82ce11c7e73dcdf7e73cacd0ef98
Я не могу понять, какие из них необходимо вернуть из URL-адреса datakey.Оба они не работают.Exoplayer
отправляет сообщение об ошибке: java.security.InvalidKeyException: Unsupported key size
Может ли кто-нибудь помочь мне в этом?