Android:如何使用 mediacodec 将两个重叠的视频保存为一个?

标签 android video ffmpeg android-mediaplayer android-mediacodec

我想做类似于 this 的事情在安卓上。

我想从文件加载视频并通过一些转换(主要是调整大小)显示两次。我想将其编码为一个视频文件。

是否可以在原生 android 中实现?用mediacodec或者以任何其他方式?

我知道有一个 ffmpeg,但我在编译它和使用 Xamarin 时遇到了问题。

最佳答案

MMSF 将允许您在屏幕上显示一个视频两次。 MediaCodec 用于所有视频解码操作。不需要特殊的解码/额外的库。 MMSF 仅使用现有的 Android Java API (MediaCodec/GLES)。可以在 fragment 着色器中相对轻松地实现向多个几何体显示单个视频的目标。 MMSF 示例 #2 说明了如何显示多个视频,但可以进行调整以使单个视频在屏幕上显示 1 次或多次。在 fragment FragmentShader.java 中,您可能希望将纹理采样器更改为来自同一源的所有采样,而不是唯一采样器。例如,texture2D(sTexture2,texCoord) 将变为 texture2D(sTexture,texCoord) 等等。这将导致同一视频多次应用于不同的几何体。也可以通过修改 gles2layout.java 来更改平铺几何体以满足您的特定需求,或者您可以完全替换实现并简单地提供您自己的顶点数据。这将获得重叠效果。单个像素处理算法和缩放操作/变换也可以应用于几何体或使用 fragment/顶点着色器来实现其他处理目标,并且可以使用每个顶点颜色作为应用效果的指示器来针对特定几何体。另一种非常简单的方法是创造性地使用纹理坐标映射。希望这对您有所帮助,祝您好运!

关于Android:如何使用 mediacodec 将两个重叠的视频保存为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29386396/

相关文章:

bash - 如何将文件名通过管道传输到 ffmpeg 命令中?

android - 滚动 ProgressBars 的 ListView

android - 如何使用 savedInstanceState 测试 Activity kill -> oncreate 生命周期

android - 单击按钮时如何检索按钮的名称(android)

audio - 将图像序列与音频结合并制作视频

javascript - html5 视频中的 Youtube 类型注释

python - Lambda 上的 FFMPEG - 没有这样的过滤器 : Overlay

android - 如何将动画添加到 Activity 完成()

html - 如何在Div后台添加元素目录下的Video

ffmpeg - 如何复制从 av_read_frame 接收到的 AVPicture。什么是正确的方法?