android - 在 Android 视频上绘图并保存

标签 android ios video ffmpeg media

我是Android meida编程的初学者,所以如果有任何问题请告诉我,非常感谢。

最近看到一个IOS版App叫V1 Sports !它允许您录制视频,然后在视频上绘制线条、圆圈或任何形状。这些形状被存储,下次打开视频时,这些形状仍然存在,除非您清除视频上覆盖的形状。

我想知道如何在 上实现这些功能安卓设备,太酷了。使用 ffmpeg 或类似的东西?我不知道从哪里开始。请告诉我一些提示~~非常感谢。

最佳答案

选项 A:

您可以创建 SurfaceTexture对象并将其附加到 MediaPlayer,如下所示

myPlayer = new MediaPlayer
...
myRedirectionSurface = new Surface(mySurfaceTexture);
myPlayer->setSurface(myRedirectionSurface);

这样,播放器的解码流被“重定向”到 SurfaceTexture 而不是 SurfaceView。
只要有可用的解码帧,就会调用 OnFrameAvailableListener。
要访问/修改图像,您可以使用 Surface 的锁定/解锁方法
我的重定向表面。

重要提示:您需要 API 级别 14 支持才能使其正常工作!

选项 B:

正如您已经指出使用 ffmpeg 的可能性一样,您可以实现您想要的,因为您可以完全访问解码器的输出帧。
您可以从 RockPlayer 或 MoboPlayer 的 ffmpeg 端口开始。
但是在这个选项中,渲染来自 NDK 的视频输出并不直接。 !

引用学分-> Extract/modify video frames on Android

关于android - 在 Android 视频上绘图并保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33871286/

相关文章:

android - 更新 ListFragment

java - Android NDK 中止停止,无法创建 NDK 版本

ios - ProgressHUD 宽度大小不改变 UI

qt - 声子在QGraphicsScene中不起作用

android - 为自定义 ListView 创建搜索 View

android - 如何在不更改 EditText 中的文本大小的情况下更改提示文本大小

ios - UIView 句柄仅双击

iphone - 在 ios6 中使用 facebook 登录无法识别的选择器已发送至实例”

html - 如何停止在 Safari 中全屏打开视频?

video - 全高清视频转FLV,浏览器播放慢