我是Android meida编程的初学者,所以如果我有任何问题请告诉我,非常感谢。
最近,我看到了名为V1 Sports的IOS版应用程序!它允许您录制视频,然后在视频上绘制线条,圆圈或任何形状。存储这些形状,下次打开视频时,形状仍然存在,除非您清除视频上的形状叠加。
我想知道如何在 Android deveice上实现这些功能,这太酷了。使用 ffmpeg 或类似的东西?我不知道从哪里开始。请告诉我一些提示~~非常感谢。
答案 0 :(得分:0)
选项A:
您可以创建SurfaceTexture对象并将其附加到MediaPlayer,如下所示
myPlayer = new MediaPlayer
...
myRedirectionSurface = new Surface(mySurfaceTexture);
myPlayer->setSurface(myRedirectionSurface);
这样,玩家的解码流被“重定向”到SurfaceTexture而不是SurfaceView。 只要有可用的解码帧,就会调用OnFrameAvailableListener。 要访问/修改图像,您可以使用Surface的锁定/解锁方法 myRedirectionSurface。
重要说明:您需要获得API级别14支持才能使其正常运行!
选项B:
正如您已指出使用ffmpeg的可能性,您可以实现您想要的目标,因为您可以完全访问解码器的输出帧。 您可以从RockPlayer或MoboPlayer的ffmpeg端口开始。 但在此选项中,渲染NDK的视频输出不是直播前进。 !
参考学分 - > Extract/modify video frames on Android