android - 使用 mediacodec 在 android 上解码和组合两个视频
问题描述
我正在尝试解码两个单独的视频(长度相同)并在android上并排显示(同步)。我想使用 android SDK 组件(即 mediaCodec)而不是 FFMPEG,因为我假设它会给我更好的性能(如果我错了,请纠正我)。
到目前为止,我已经尝试了一大堆不同的事情,但我认为它归结为解码 2 个视频,将帧发送到 2 个表面纹理,使用 GLES 着色器将它们组合成一个表面纹理(同时以某种方式同步它们)然后渲染将它们放到显示器上。
现在我在同步模式下使用媒体编解码器,解码部分工作。
如果需要,我可以分享我的代码,但它有点乱,我认为它不会很有帮助,但本质上,我通过调用 decoder.dequeueOutputBuffer() 并调用解码器来获取下一帧的索引。 releaseOutputBuffer() 使用该索引。我也知道我可以使用 ByteBuffer buffer = outputBuffers[decoderIndex]; 将帧作为 byteBuffer 获取。
我的主要问题是如何将它从这里发送到表面纹理,然后将其中两个组合在一起?
尽管有一些使用 FFMPEG 的解决方案,但我似乎在互联网上找不到任何可以实现这一目标的东西。任何帮助指出一些代码示例做类似的事情,甚至更好,帮助我理解这应该如何工作,将不胜感激。
解决方案
推荐阅读
- autohotkey - 如果程序已打开,请将其关闭
- javascript - 后处理程序无法正常工作-React Native
- kendo-grid - 如何判断哪个剑道网格动作触发了数据源更改事件?
- reactjs - Redux-Saga:API 调用完成后更改 url
- android - 初始加载后更新 PagedListAdapter 以显示最新的网络数据
- javascript - 如何防止 Pinterest 保存按钮“隐藏”在 div 下?
- node.js - 发生 Firebase 身份验证错误
- mysql - MySQL Workbench 6.3:我应该如何将新列插入特定位置(在表格中间)
- ionic-framework - Ionic 2:菜单工具不起作用
- php - 在模型 Laravel 中使用控制器的值