android - 从视频中获取帧而不是使用 MediaMetadataRetriever

标签 android opencv video ffmpeg bitmapfactory

我正在尝试找到一种将视频提取到帧中的方法。 主要目标是使用 openGl 更改图像并重新构建视频。

问题是我找不到提取视频的合适方法。我看到使用 MediaMetadataRetriever 可以回答很多熟悉的问题,但我不想使用它,因为它工作起来真的很慢。

我对 jcodec、ffmpeg、openCV 和 mp4parser 等库做了一些研究。

jcodec - 工作正常但非常慢,每个 getFrame() 花费 1 秒。

ffmpeg - 在 GPL 许可下,这意味着您必须发布您的代码。

openCV - 复杂。也许我可以用它完成我需要的,但它看起来太复杂了,我正在寻找一个更简单的解决方案。

mp4parser - 提取解码帧但不支持将它们编码为 jpg/png。

如果能在这方面得到一些帮助,那就太好了。发送

最佳答案

不,ffmpeg 库已获得 LGPL 许可,不需要打开所有代码。 android 版本的 avcodec 包括一个 libstagefright 接口(interface),它为 h264 (avc) 提供硬件编解码器。这是您在 Android 上所能达到的最快速度。

关于android - 从视频中获取帧而不是使用 MediaMetadataRetriever,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19665103/

相关文章:

android - 如何打开并检查 Play Protect 是否启用或禁用

android - Android 上的 select() 总是返回 false

c++ - 如何在 RelWithDebInfo 模式下构建依赖于 opencv 3.4.0 的项目

c# - 用于视频播放的 .NET FFmpeg 包装器

facebook - 如何使用 Graph API 从 Facebook 下载视频?

android - 客户端(android 应用程序)确认发送的 gcm 消息

包内资源的 Android 路径

java - 如何去除重叠轮廓

python - 使用 python 即 opencv 检测裁剪后的脸部的运动模糊

events - 收听所有 html 视频事件