11

这个问题可能听起来有点复杂或模棱两可,但我会尽量说清楚。我做了很多谷歌搜索并花了很多时间,但没有找到任何与 Windows 相关的东西。

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

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

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

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

1. Xuggler- 不支持Android

2.JavaCV或者JJMPEG- 找不到任何建议如何做的教程?

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

4

3 回答 3

1

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

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

  • 你想从文件/内存/url中读取吗?
  • 你想保存到文件/mem/url吗?
  • 你需要实时处理吗?
  • 您需要的不仅仅是简单的画中画吗?
于 2013-03-19T10:51:44.630 回答
0

您可以使用 OpenGL 来解决问题。但是请注意,您将需要渲染步骤,一个在 FBO 中渲染第一个视频,然后第二个渲染第二个视频,使用 FBO 作为 TEXTURE0,第二个作为 EXTERNAL_TEXTURE。

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

你可以在这里查看源代码:在Android中使用SurfaceTexture和一些重要信息在这里:SurfaceTexture(外部图像)和普通纹理的Android OpenGL组合

我唯一不确定的是当两个媒体播放器实例并行运行时会发生什么。我想这应该不是问题。

于 2013-04-09T11:23:30.457 回答
-2

ffmpeg 是一个非常活跃的项目,一直有很多变化和发布。

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

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

如果您选择走 Runtime.exec() 路径,这个 Red5 线程应该很有用:

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

于 2013-03-19T12:17:46.587 回答