【发布时间】:2014-01-14 08:16:18
【问题描述】:
我想在我的 Android 设备上流畅地播放(渲染到表面)两个或多个连续的 mp4 视频序列(每个都存储在我设备上的单独文件中,并且可能在启动时不存在)(没有停顿、闪烁等) 。) 方式。因此,观众可能会得到只观看一个连续视频的印象。第一步,仅对我的 Nexus 7 平板电脑就足够了。 为了只显示一个视频,我一直在使用 MediaCodec API,其方式与http://dpsm.wordpress.com/2012/07/28/android-mediacodec-decoded/ 类似,而且效果很好。通过仅在第一个序列完成后创建(和配置)第二个解码器(decoder.stop 和第一个解码器的 decoder.release 被调用),可以看到混合。为了在两个不同的视频序列之间平滑淡入淡出,我正在考虑使用 init 功能,其中第二个视频已经通过 decoder.configure(format, surface, null, 0) 在第一个播放过程中。此外,第一帧也通过 decoder.queueInputBuffer 排队。 但是这样做会导致以下错误:
01-13 16:20:37.182: E/BufferQueue(183): [SurfaceView] connect: already connected (cur=3, req=3)
01-13 16:20:37.182: E/MediaCodec(9148): native_window_api_connect returned an error: Invalid argument (-22)
01-13 16:20:37.182: E/Decoder Init(9148): Exception decoder.configure: java.lang.IllegalStateException
在我看来,一个表面只能由一个解码器同时使用。那么,还有其他可能吗?也许使用 OpenGL?
最好, 亚历克斯。
【问题讨论】:
标签: android video android-mediacodec