Flutter Как расшифровать (.m3u8) видеофайл методом AES-128 и воспроизвести в видеоплеере - PullRequest
0 голосов
/ 11 марта 2020

Как я могу расшифровать (.m3u8) видеофайл, используя метод AES-128, и воспроизвести его в видеопроигрывателе ?.

. Я использовал метод ниже для преобразования файла:

Future<String> decryptFile(filePath) async {
    var encodedKey = '//enckey';
    var encodedIv = '//ivkey';
    var text = new File(filePath).readAsStringSync();
    final key1 = enc.Key.fromBase64(encodedKey);
    final iv = enc.IV.fromBase64(encodedIv);
    final encrypter = enc.Encrypter(enc.AES(key1, mode: enc.AESMode.cbc));
    final decrypted = encrypter.decrypt(enc.Encrypted.fromBase64(text), iv: iv);
    final filename = '${p.basenameWithoutExtension(filePath)}.m3u8';
    final directoryName = p.dirname(filePath);
    final newFilePath = p.join(directoryName, filename);
    List<int> bytes = utf8.encode(decrypted);
    print(bytes);
    var newFile = new File(newFilePath);
    await newFile.writeAsBytes(bytes);
    return newFilePath;
}

ниже - инициализация видеопроигрывателя

VideoPlayerController _controller;
var decUrl = await decryptFile(url); // here i am calling to decrypt the encrypted url file path
_controller = VideoPlayerController.network(decUrl); 

Используемый плагин

encrypt: ^4.0.0
video_player: ^0.10.5+2

Не работает. Ошибка: "Исключение необработанное: FileSystemException: Невозможно открыть файл, путь = 'https://example.com/playlist.m3u8' (ошибка ОС: нет такого файла или каталога, errno = 2) "

, поэтому помогите мне разобраться, как расшифровать видео файл и воспроизведение.

Заранее спасибо.

1 Ответ

0 голосов
/ 11 марта 2020

Интересно, проблема в том, что вы передаете URL, а не путь к файлу? Класс File работает с файлами на диске, а не удаленно в сети.

Сначала попробуйте загрузить файл. И, конечно же, https://pub.dev/packages/flutter_cache_manager предоставляет простой способ превратить удаленные файлы в локальные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...