如何从视频中捕获位图图像

Posted

技术标签:

【中文标题】如何从视频中捕获位图图像【英文标题】:How to capture bitmap image from video 【发布时间】:2013-06-15 09:51:47 【问题描述】:

我正在使用 SurfaceView 播放视频,我想从正在运行的视频中获取图像,我尝试使用 getDrawingCache(),但我得到的是空白图像或黑屏,但是当我绘制任何其他没有视频的布局的图像时这工作正常, 所以请任何人都可以解决如何从视频或surfaceView中获取位图图像的问题。提前感谢,如果您知道,请回答我的问题。 我使用了这段代码,但没有得到结果。

mVideo.setDrawingCacheEnabled(true);

  mVideo.buildDrawingCache();

  Bitmap b = mVideo.getDrawingCache();

【问题讨论】:

【参考方案1】:

这不起作用,因为视频内容没有“暴露”到普通视图层。

如果您使用 API 级别 >= 10,则可以使用 MediaMetadataRetriever getFrameAtTime。它被描述为here。

即使这样也可能不会返回确切的帧,因为它相当依赖于硬件。

最可靠的方法是使用 FFMPEG 之类的东西自己访问流。

【讨论】:

嗨 Ken Wolf 你能给我一些理解 FFMPFG 的例子吗,我不知道如何通过 FFMPEG 从视频中拍照。我已经在网上搜索过,但没有找到任何有用的网站。 恐怕我不是 FFMPG 方面的专家。我绝对知道这是可能的,但这将是一个非常详细的解决方案。也许其他一些问题可以像这个一样提供帮助(***.com/questions/4725773/ffmpeg-on-android

以上是关于如何从视频中捕获位图图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中结合覆盖位图和捕获的图像?

如何从使用directx c# visual studio播放的视频中获取和处理每一帧(位图图像​​)

如何从图像集合中保存视频文件?

OPENCV 桌面捕获第二部分

如何将 rgb 图像数组从 sws_scale 转换为 DIB(在内存位图中)

如何从 C# 中的图像目录创建视频?