我尝试将视频片段组合在一起使用MediaCodec API。使用解码器,MediaMuxer可以将视频片段组合在一起,但每个片段之间的过渡看起来过于沉闷。我想在每个剪辑之间添加一些过渡效果,比如GoPro Quik(带有漂亮的过渡效果)。据我所知,Opengl着色器可以产生过渡效果,但我不知道该怎么做。我可以帮助我一些指导或示例吗? 谢谢!
答案 0 :(得分:1)
第一步是"在纹理上播放视频"你可能会在SO上找到很多例子。
然后你需要一些数学技巧才能正确地用屏幕在屏幕上定位视频。除非您可以保证它们都具有相同的尺寸,否则至少在视频之间通常需要一些比例。
有些过渡只是通过变换或改变精灵位置来完成,但是如果你想要一些很好的混合,你可能需要在同一个着色器中使用多个纹理(视频帧样本),你需要对它们进行调查。活跃的纹理"。
然后问题是您是否想要播放视频,或者您只想使用转场创建新视频。要播放它,你需要一个视频来实时生成样本,然后寻找其他玩家在特定时间内提供缓冲。如果要创建视频,则需要设置一些目标FPS,使用该FPS创建采样持续时间并在该持续时间内搜索视频帧并绘制它们。第二个需要一个FBO(帧缓冲对象),而不是表面视图,但在这两种情况下,我建议你绘制到FBO并将纹理(附加到FBO)重绘到曲面。
这只是视频部分所以在某些时候你需要单独播放音频或者在创建新视频的情况下你需要将音频样本附加到视频中,这可以再次进行一些混合但是没有任何内容使用openGL。