Возможно ли расшифровать и декодировать данные с использованием MediaCodec API? Я хочу расшифровать и декодировать данные, которые зашифрованы широкоугольным или другим механизмом DRM. Основная вещь, которую я хочу попробовать: Я настроил MediaCodec с поверхностью, созданной с SurfaceTexure. MediaCodec->configure(..????., with mediacrypto instance, ...)
Я не уверен, могу ли я пройти SurfaceTexture в этом случае? Или любая безопасная конфигурация, которую я должен делать?Расшифровать и декодировать зашифрованные данные в SurfaceTexture с помощью MediaCodec
MediaCodec->start()
MediaCodec->queuesecureinputbuffer(...,with cryptoinfo,...)
MediaCodec->dequeoutputbuffer() to get the decoded data back....
Образец, который я мог найти, заключается в том, чтобы непосредственно визуализировать дешифрованные данные на SurfaceView.
Но я просто хочу получить декодированный буфер или SurfaceTexture, который отображается MediaCodec.
Если я не установил какую-либо безопасную конфигурацию, такую как MediaFormat->SetFeatureEnabled("secure-playback", true)
; для создания декодера используйте OMX.qcom.video.decoder.avc. я получу такую ошибку,
E/OMX-VDEC-1080P(23290):
E/OMX-VDEC-1080P(23290): ERROR: Sending OMX_EventError to Client
E/ (23290): not in avi mode
E/ACodec (1930): [OMX.qcom.video.decoder.avc] ERROR(0x80001009)
E/ACodec (1930): signalError(omxError 0x80001009, internalError -2147483648)
E/MediaCodec(1930): Codec reported err 0x80001009, actionCode 0, while in state 6
W/System.err(1930): java.lang.IllegalStateException
W/System.err(1930): at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
W/System.err(1930): at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:1033)
После того, как я установил безопасный конфиг и использовать MediaCodec :: CreateByCodecName (с «.secure» приложенном) я получить такую ошибку ...
E/ACodec: native window could not be authenticated
E/ACodec: Failed to allocate buffers after transitioning to IDLE state (error 0xffffffff)
E/ACodec: signalError(omxError 0x80001001, internalError -1)
Возможно ли преобразование из SurfaceView в SurfaceTexture? – user588477
Или можно использовать MediaCodec-> Configure (без поверхности?) – user588477
Даже если вам удастся настроить MediaCodec, механизм «доверенного пути» не позволит вам получить доступ к данным пикселя. Например, попробуйте повернуть устройство во время воспроизведения фильма, защищенного DRM, из Play Маркета. Обычно структура захватывает экран и использует его для анимации вращения, но видеопроигрыватель просто черным ... даже SurfaceFlinger не может читать пиксели. Приложение может устанавливать положение, размер и ориентацию SurfaceView, но об этом. – fadden