2013-03-19 47 views
11

这个问题听起来有点复杂或模棱两可,但我会尽量让它尽可能清楚。我做了大量的谷歌搜索,花了很多时间,但没有发现任何与Windows相关的东西。一起显示两个视频,然后作为合并视频输出到一个屏幕上

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

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

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

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

1. Xuggler - 不支持Android

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

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

+1

长时间陷在这个问题上,试图在windows中使用ffmpeg。但对c/C++没有深入的了解。也无法获得谷歌的代码。 – 2013-03-19 10:45:16

+0

我也试过FFMpeg,并且由于缺乏知识而导致同样的问题,有没有什么办法可以通过java修复它.. – Anil 2013-03-19 10:48:59

+0

如果你能够做PIP(画中画),那么我有一个简单的解决方案。 – Varun 2013-03-19 12:00:40

回答

1

我会从JavaCV开始。这是相当不错的和灵活的。它应该允许您抓取框架,将它们合成并将它们写回到文件中。使用FFmpegFrameGrabber和Recorder类。构图可以手动完成。

答案的其余部分取决于几件事情:

  • 你想从一个文件/ MEM/URL读?
  • 要保存到文件/ mem/url吗?
  • 你需要实时处理吗?
  • 你需要比简单的画中画更多的东西吗?
+0

感谢您的回复如此之快,但现在我想读取两个视频文件,然后一起显示并将该流视为输出。顺便说一句,它在Windows环境中工作.. – Anil 2013-03-19 10:53:44

+1

所以JavaCV是要走的路。 – Zielony 2013-03-19 10:55:33

+1

@Zielony,嘿,你能指出任何教程吗? – 2013-03-19 10:56:05

-2

ffmpeg是一个非常活跃的项目,很多的变化和释放所有的时间。

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

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

你应该选择往下走的Runtime.exec()的路径,这Red5的线程应该是有用的:

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

+0

使用计算机视觉库,音频回放会发生什么?你知道Xuggler甚至不支持android。 :( – 2013-03-22 10:30:55

0

你可以使用OpenGL这样的伎俩。但请注意,您需要渲染步骤,一个渲染FBO中的第一个视频,然后第二个渲染第二个视频,使用FBO作为TEXTURE0,第二个作为EXTERNAL_TEXTURE。

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

你可以在这里查看源代码:Using SurfaceTexture in Android和这里的一些重要信息:Android OpenGL combination of SurfaceTexture (external image) and ordinary texture

我不知道的唯一的事情是,当媒体播放器的两个实例并行运行会发生什么。我想这不应该是一个问题。

相关问题