这个问题可能听起来有点复杂或含糊不清,但我会尽力让它变得清晰。我做了很多谷歌搜索并花了很多时间,但没有找到任何与Windows相关的东西。
我想在一个屏幕上播放两个视频。一个在背景中全屏,一个在顶部,在一个小窗口或小角度/高度在右角。然后我想要一个输出,其中包含两个视频在一个屏幕上一起播放。
所以基本上一个视频覆盖了另一个,然后我希望将其作为输出流式传输,以便用户可以稍后播放该流。
我不是要求您编写整个代码,只是告诉我该做什么或如何做,或者我必须使用哪个工具或第三方SDK来实现它。
更新: 尝试了很多解决方案。
1. Xuggler
- 不支持Android
。
2. JavaCV
或JJMPEG
- 无法找到任何建议如何操作的教程?
现在正在寻找FFMPEG-搜索了很长时间但却找不到任何建议编码方式的教程。我找到了如何解决它的命令行方式。 所以任何人都可以建议或指出FFMPEG的教程或告诉任何其他方式
答案 0 :(得分:1)
我会从JavaCV开始。它非常好而且灵活。它应该允许您抓取帧,合成它们并将它们写回文件。使用FFmpegFrameGrabber和Recorder类。组成可以手动完成。
答案的其余部分取决于一些事情:
答案 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线程应该是有用的: