如何从视频中捕获位图图像
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)以上是关于如何从视频中捕获位图图像的主要内容,如果未能解决你的问题,请参考以下文章
如何从使用directx c# visual studio播放的视频中获取和处理每一帧(位图图像)