【问题标题】:Extract/modify video frames on Android在 Android 上提取/修改视频帧
【发布时间】:2012-02-09 06:58:07
【问题描述】:

我有一个视频文件。我想获取视频的每一帧并对帧进行一些修改,例如在其中绘制另一个位图,放置一些文本等。

是否有任何 API/框架可用于从 Android 中的视频中获取帧?我使用他们的 AVFramework 在 iOS 中做了类似的事情。

如果可以使用 ffmpeg,我将使用一些可用的开源 NDK。

【问题讨论】:

    标签: android video frame edit


    【解决方案1】:

    选项 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 的视频输出并不直接。 !

    【讨论】:

      猜你喜欢
      • 2012-04-24
      • 1970-01-01
      • 2015-02-01
      • 1970-01-01
      • 2014-05-06
      • 1970-01-01
      • 2012-06-30
      • 2012-05-27
      • 1970-01-01
      相关资源
      最近更新 更多