Воспроизведение зашифрованного видео URL напрямую - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть URL, содержащий зашифрованный видеофайл, зашифрованный с помощью AES / CTR / NoPadding. Я использую ExtractorMediaSource вместе с CustomMediaSource DefaultHTTPMediaSource Единственное изменение, которое я сделал, это открытый метод внутри этого:

IvParameterSpec ivParameterSpec = new IvParameterSpec(ivBytes);
SecretKeySpec sks = new SecretKeySpec(key, "AES");
Cipher cipher = Cipher.getInstance("AES/CTR/NoPadding");
cipher.init(Cipher.DECRYPT_MODE, sks, ivParameterSpec);
InputStream inputStream = connection.getInputStream();
this.inputStream = new StreamingCipherInputStream(inputStream, cipher);

Вот класс StreamingCipherInputStream:

class StreamingCipherInputStream extends CipherInputStream {

    private int mBytesAvailable;
    private InputStream mInputStream;

    public StreamingCipherInputStream(InputStream is, Cipher c) {
        super(is, c);
        mInputStream = is;
        try {
            mBytesAvailable = is.available();
        } catch (IOException e) {
        }
    }
    @Override
    public int available() throws IOException {
        return mInputStream.available();
    }
}

Все остальное осталось так же, как DefaultHTTPDataSource. Но при воспроизведении этого видео с использованием этого источника данных выдается эта ошибка:

[OMX.hisi.video.decoder.hevc] setPortMode при сбое вывода в DynamicANWBuffer с ошибкой -2147483648 java .lang.IllegalStateException: Старший бит не ноль: -2067207107

Видео имеет формат mp4 и 20 МБ, видео было прочитано около 1 МБ и затем была выдана вышеуказанная ошибка.

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