代码之家  ›  专栏  ›  技术社区  ›  Alin

在Android中将SurfaceView动画录制为视频文件

  •  3
  • Alin  · 技术社区  · 6 年前

    上次我调查了Android上的视频输出( Adding watermark bitmap over video in android: 4.3's MediaMuxer or ffmpeg )这不是一件容易的事。

    这里有一个场景:我有一个SurfaceView和一个在x,y坐标下绘制的位图。用户点击图像并将其拖动到步骤2和步骤3。

    enter image description here

    所以基本上,如果我记录下触摸所经过的所有x,y,我可以通过以一定的帧速率绘制位图来回放动画。

    现在的问题是:有没有一种简单的方法可以使用Android组件(无ffmpeg)将“动画”从SurfaceView记录到视频文件中?

    2 回复  |  直到 6 年前
        1
  •  0
  •   Lucem    6 年前

    据我所知,记录 SurfaceView ,您必须记录屏幕,因为SurfaceView是不同的,并且不在普通视图层次中绘制。

    事实上,有些情况下,应用处理器甚至无法访问SurfaceView的显示数据-它可能是硬件视频管道的输出,该管道通过专用视频覆盖与应用处理器的显示输出组成。 Google Groups

    一种创造性的方法是在事件期间同时捕获屏幕并从位图中创建MOV。请参见: Create Video From Screen Capture

        2
  •  1
  •   fadden    6 年前

    因为您正在进行渲染,所以只需渲染两次:一次到显示器,一次到视频。这是假设你 只有 想要SurfaceView内容…如果您也想要其他视图,那么您需要使用屏幕记录方法。

    有关工作示例,请参阅中的“记录GL应用程序” Grafika . 对于API 21+,可以渲染到 MediaRecorder's Surface 如果你只需要一个.mp4文件,这可能会更容易。