【问题标题】:Android:where to store large arrays of frames before encoding?Android:编码前在哪里存储大量帧?
【发布时间】:2013-11-14 08:39:27
【问题描述】:

我遇到了编程问题

我正在尝试对已与从其他层(如位图/GLsurface)检索到的其他帧合并的相机帧中的视频进行编码

当我使用 320X240 时。我可以以精细的 FPS(~10) 实时进行合并,但是当我尝试增加像素大小时,我得到的 FPS 小于 6。
这是明智的,因为我的合并功能取决于像素大小。

所以我要问的是,如何存储帧数组以供后处理(编码)?

我不知道如何存储这么大的数组。

简单计算一下:
如果我需要每秒存储 10 帧
每一帧都是960X720像素
所以我需要存储 40 秒的视频:40X10X960X720X(3/2-android 因子)=~ 276 MB

堆太多了

有什么想法吗?

【问题讨论】:

    标签: android ffmpeg encode frames large-data


    【解决方案1】:

    您可以简单地将相机输入记录为视频 - 即使在 720p 分辨率下,40 秒也不会是一个大文件 - 然后离线您可以再次解码、合并和编码。最大的技巧是 MediaRecorder 将使用硬件,因此编码速度非常快。压缩后的视频可以实时写入sdcard或本地文件系统,读取解码也不成问题。

    【讨论】:

    • 是的,但是如何解码和编码?我需要 FFmpeg 来做这个?我只知道如何实时编码。你知道如何解码编码吗?
    • 此链接使用 MediaRecorder-无法解码和编码回。我必须使用 FFmpeg 进行此操作。
    • 为什么MediaRecorder的结果无法解码?我并不是说这是唯一的选择,您可以使用 OpenMAX IL 或 MediaCodec 或使用 stagefright 在本机代码中执行相同的操作。你甚至可以使用 ffmpeg,如果你觉得更舒服的话,但关键是要使用硬件编码器(并且为 Android 构建支持 stagefright 的 ffmpeg 并不比其他替代方案容易得多,恕我直言)。
    • 我怎样才能解码它?使用android API?我没有找到任何带有媒体记录器的解码/编码功能。也许在 4.3 中,但我的目标是较低的操作系统版本
    猜你喜欢
    • 2013-08-28
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 2014-07-20
    相关资源
    最近更新 更多