Как воспроизвести видео из байтового массива? - PullRequest
8 голосов
/ 29 февраля 2012

Я работаю над приложением, которое нуждается в шифровании видеофайлов, которое работает достаточно хорошо. Но метод, который я использую для расшифровки, возвращает видео как в байтовом массиве.Так что, в любом случае, я могу воспроизвести видео, используя этот массив, не создавая новый файл.

Мой метод расшифровки:

  private static byte[] decrypt(byte[] raw, byte[] encrypted) throws EncrypterException {
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
try {
    final Cipher cipher = Cipher.getInstance("AES");
    cipher.init(Cipher.DECRYPT_MODE, skeySpec);

    return cipher.doFinal(encrypted);

} catch (Exception e) {
    throw new EncrypterException(e);
}
}

Пожалуйста, помогите мне, я застрял здесь?

Ответы [ 3 ]

1 голос
/ 22 декабря 2015

После большого количества поиска этот ответ может быть суммой. Все кредиты должны идти владельцам решения.

Поскольку VideoView принимает только URL или файл, у нас есть два решения;

Решение 1; Создайте временный файл с потоком и предоставьте этот файл для videoView.

Ref; https://stackoverflow.com/a/21549067/1847645

Решение 2; Создание медиасервера в локальной системе Android и передача потока на медиасервер, где videoView направляется на локальный хост для потоковой передачи.

Ref; https://stackoverflow.com/a/9096241/1847645

Другое исх. Что очень полезно, благодаря libeasy; https://stackoverflow.com/a/15668803/1847645

0 голосов
/ 02 апреля 2013

Вы должны передавать VideoView не статическим файлом, а потоком.Как произвести этот поток?См. Поддерживаемые Android форматы мультимедиа .Самым простым может быть локальный http-сервер.LocalSingleHttpServer - пример библиотечного компонента, реализующего решение такого типа.

0 голосов
/ 29 февраля 2012

Как вы обычно проигрываете видео?Вы отправляете InputStrem экземпляр игроку.Итак, вы ByteArrayInputStream оборачиваете ваш байтовый массив и отправляете его игроку.

...