一起显示两个视频,然后在单个屏幕上作为合并视频输出

时间:2013-03-19 10:43:38

标签: android ffmpeg javacv xuggler android-videoview

这个问题可能听起来有点复杂或含糊不清,但我会尽力让它变得清晰。我做了很多谷歌搜索并花了很多时间,但没有找到任何与Windows相关的东西。

我想在一个屏幕上播放两个视频。一个在背景中全屏,一个在顶部,在一个小窗口或小角度/高度在右角。然后我想要一个输出,其中包含两个视频在一个屏幕上一起播放。

所以基本上一个视频覆盖了另一个,然后我希望将其作为输出流式传输,以便用户可以稍后播放该流。

我不是要求您编写整个代码,只是告诉我该做什么或如何做,或者我必须使用哪个工具或第三方SDK来实现它。

更新: 尝试了很多解决方案。

1. Xuggler - 不支持Android

2. JavaCVJJMPEG - 无法找到任何建议如何操作的教程?

现在正在寻找FFMPEG-搜索了很长时间但却找不到任何建议编码方式的教程。我找到了如何解决它的命令行方式。 所以任何人都可以建议或指出FFMPEG的教程或告诉任何其他方式

3 个答案:

答案 0 :(得分:1)

我会从JavaCV开始。它非常好而且灵活。它应该允许您抓取帧,合成它们并将它们写回文件。使用FFmpegFrameGrabber和Recorder类。组成可以手动完成。

答案的其余部分取决于一些事情:

  • 你想从文件/ mem / url中读取吗?
  • 您要保存到文件/ mem / url吗?
  • 你需要实时处理吗?
  • 你需要的东西不仅仅是简单的画中画吗?

答案 1 :(得分:0)

您可以使用OpenGL来完成这项工作。但请注意,您需要渲染步骤,一个渲染FBO中的第一个视频,然后第二个渲染第二个视频,使用FBO作为TEXTURE0,第二个作为EXTERNAL_TEXTURE。

混合,你想要的所有东西都将由OpengL完成。

您可以在此处查看源代码:Using SurfaceTexture in Android以及此处的一些重要信息:Android OpenGL combination of SurfaceTexture (external image) and ordinary texture

我唯一不确定的是当两个mediaplayer实例在Parallel中运行时会发生什么。我想这应该不是问题。

答案 2 :(得分:-2)

ffmpeg是一个非常活跃的项目,不断变化和释放。

你应该看看Xuggler项目,它为你想要做的事情提供了一个Java API,并且它们与ffmpeg紧密集成。

http://www.xuggle.com/xuggler/

如果你选择沿着Runtime.exec()路径走下去,这个Red5线程应该是有用的:

http://www.nabble.com/java-call-ffmpeg-ts15886850.html