- 浏览: 212903 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (196)
- android (153)
- sqlite (1)
- java (3)
- os (4)
- tools (4)
- ResolveInfo 转 packageinf 取信息 (1)
- multimedia (2)
- fastboot (1)
- create user in samba (0)
- android qcn (0)
- windows (0)
- net (2)
- linux (1)
- git (0)
- proguard (0)
- android cpu (1)
- android gts (1)
- MySql (1)
- c/c++ (0)
- network (1)
- python (3)
- AI (1)
- Ultroedit (1)
- HarmonyOS NEXT (0)
准确的抓取视频的一帧
public void captureFrame() {
try {
MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
mediaMetadataRetriever.setDataSource(getApplicationContext(), mUri);
Bitmap bitmap = mediaMetadataRetriever.getFrameAtTime((mSecVideoView.getCurrentPosition()) * 1000, MediaMetadataRetriever.OPTION_CLOSEST );
mImageViewCapture.setImageBitmap(bitmap);
mImageViewCapture.setVisibility(View.VISIBLE);
mSecMediaController.hide();
mImageViewCapture.postDelayed(new Runnable() {
@Override
public void run() {
mImageViewCapture.setVisibility(View.GONE);
}
}, 3000);
// save image in local
File file = new File(Utils.VIDEO_CAPTURE_DIR);
if (!file.exists()) {
file.mkdir();
}
if (bitmap != null) {
FileOutputStream fileOutputStream = new FileOutputStream(Utils.VIDEO_CAPTURE_DIR + mSecVideoView.getCurrentPosition() + ".jpg");
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fileOutputStream);
fileOutputStream.close();
}else{
Log.e(TAG, "SecVideoPlayer captureFrame() bitmap is null");
Toast.makeText(this, getResources().getString(R.string.capture_fail), Toast.LENGTH_SHORT).show();
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void captureFrame() {
try {
MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
mediaMetadataRetriever.setDataSource(getApplicationContext(), mUri);
Bitmap bitmap = mediaMetadataRetriever.getFrameAtTime((mSecVideoView.getCurrentPosition()) * 1000, MediaMetadataRetriever.OPTION_CLOSEST );
mImageViewCapture.setImageBitmap(bitmap);
mImageViewCapture.setVisibility(View.VISIBLE);
mSecMediaController.hide();
mImageViewCapture.postDelayed(new Runnable() {
@Override
public void run() {
mImageViewCapture.setVisibility(View.GONE);
}
}, 3000);
// save image in local
File file = new File(Utils.VIDEO_CAPTURE_DIR);
if (!file.exists()) {
file.mkdir();
}
if (bitmap != null) {
FileOutputStream fileOutputStream = new FileOutputStream(Utils.VIDEO_CAPTURE_DIR + mSecVideoView.getCurrentPosition() + ".jpg");
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fileOutputStream);
fileOutputStream.close();
}else{
Log.e(TAG, "SecVideoPlayer captureFrame() bitmap is null");
Toast.makeText(this, getResources().getString(R.string.capture_fail), Toast.LENGTH_SHORT).show();
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
发表评论
-
Android SnappyDB
2018-05-15 11:23 908https://blog.csdn.net/qq_214305 ... -
使用UncaughtExceptionHandler保存全局异常(转)
2018-05-07 15:04 604From: https://blog.csdn.net/dre ... -
android udp
2018-04-10 19:47 566Android之Socket的基于UDP传输 接收方创建步骤: ... -
android DownloadManager
2018-04-10 12:52 553From: https://www.jianshu.com/p ... -
Snackbar 可以交互的Toast
2018-04-08 21:44 729Snackbar 是 Android design sup ... -
android 操作串口
2018-03-19 18:20 609http://blog.csdn.net/akunainian ... -
proguard对 android-support-v4.jar 的配置
2018-03-16 15:32 688-libraryjars libs/android-sup ... -
apk 多个dex
2018-03-16 10:05 968android studio 配置应用生成多个dex ... -
ddmlib 解决android n file explorer 为空问题
2018-03-16 09:27 890百度云:http://pan.baidu.com/s/1sl4 ... -
android 代码混淆
2018-03-15 08:38 1016打开混淆开关 Android.mk ... -
menu item 显示icon
2018-03-07 09:32 646@Override public boolean onMenu ... -
ubuntu 脚本切换root用户,并执行其它脚本
2018-03-05 09:58 0#!/bin/bash expect -c" ... -
DrawerLayout 滑动侧边栏
2018-03-01 10:42 0// TODO -
jack-server 多用户编译问题
2018-02-27 10:44 13993),需要同时修改 $HOME/.jack-server/co ... -
更新eclipse 遇到两个问题 Oxygen.2 Release (4.7.2)
2018-02-26 14:28 12131. the file dx.jar was not load ... -
监听系统开关变化
2018-02-05 14:02 804// 转屏开关 /** * Content obse ... -
android 8.0 模块编译命令
2018-02-02 14:42 1167Invoke ". build/envsetup.s ... -
svn checkout 忽略某个文件夹
2018-01-26 11:14 1354android源码更新时, frameworks\compil ... -
eclipse jni
2018-01-19 16:10 491试过,可以运行 http://blog.csdn.net/sb ... -
opencv for android
2018-01-19 14:37 415http://blog.csdn.net/sbsujjbcy/ ...
相关推荐
使用IMediaDet接口抓取视频帧的过程大致分为以下几个步骤: 1. 初始化Media Foundation:首先,你需要初始化Media Foundation。这通常通过调用`CoInitializeEx(NULL, COINIT_APARTMENTTHREADED)`和`MFStartup(MF_...
以下是一个简化的代码示例,展示了如何从视频中截取一帧: ```java // 初始化FFmpeg FFmpeg ffmpeg = new FFmpeg(); // 创建输入输出文件路径 String videoPath = "path/to/video.mp4"; String imageOutputPath = ...
接下来,我们可以遍历每一帧,将其保存为单独的图像文件。以下代码演示了如何将每一帧图像保存为.jpg格式: ```matlab for i = 1:frameCount frame = read(video, i); % 读取第i帧 imwrite(frame, sprintf('frame...
6. 播放和捕获:调用`IMediaControl.Run`开始播放视频,然后通过`IMediaSample`接口获取每一帧的数据。当达到指定帧时,将其保存为图片文件。 7. 结束处理:完成提取后,调用`IMediaControl.Stop`停止播放,释放...
这段代码使用了Xuggler库,它读取视频文件,通过`MediaViewer`预览并捕获第一帧作为截图。当然,实际的应用可能需要更复杂的逻辑,例如指定时间戳、帧数或根据视频内容来决定截图。 总的来说,"视频帧截图jar.rar...
`FrameGrabberUtil.java`是一个示例类,很可能包含了一个方法来抓取视频的第一帧。通常,这个类会使用JavaCV提供的`FrameGrabber`接口,通过FFmpeg读取视频文件,并使用`grab()`方法获取视频帧。一旦得到帧,可以...
这段代码会从指定的视频文件中读取每一帧,并将它们保存为独立的JPEG图片,文件名以帧号命名。需要注意的是,由于视频文件的编码方式,某些帧可能包含前一帧的部分信息,因此直接连续保存可能会导致图片重复。在实际...
废话了,我们经常为图片生成缩略图,在windows中视频在察看缩略图的时候也显示出图片来,如果作一个视频系统,那么用户上传上来的视频,如何为其生成缩略图呢?要想操作视频文件,通常所用的方法就是DirectX里面的...
而如果你需要对视频流进行更复杂的操作,比如提取某一帧作为图片,可能需要结合mencoder或其他图像处理库。在asp.net和Java中,这些操作都可以通过精心设计的后台服务或定时任务来自动化执行,确保视频处理的效率和...
4. **读取帧**:使用VideoCapture对象的read()方法读取视频帧,它会返回一个布尔值,表示是否成功读取到新的一帧,以及一个包含读取帧的numpy数组。 ```python while video.isOpened(): ret, frame = video.read() ...
在处理视频数据帧时,通常会用到"源滤波器"(如Video Capture Filter)来连接实际的视频输入设备,然后通过"转换滤波器"(如Sample Grabber)来抓取每一帧的数据。 Sample Grabber滤波器是DirectShow中一个非常重要...
最后,图像处理也是视频抓取过程中的一部分,因为视频本质上是一系列连续的图像帧。有时,我们可能需要单独提取某帧作为静态图片,这就需要用到截图功能。部分视频抓取工具也集成了这一功能,让用户能够方便地获取...
DirectShow是微软开发的一个强大...总的来说,利用DirectShow在VC++中抓取影片帧是一个涉及多媒体处理、图形编程和组件设计的复杂过程,但通过使用DirectShow提供的接口,我们可以简化这一过程,高效地实现帧捕获功能。
例如,OpenCV提供了`cv2.VideoCapture()`函数,通过传入视频文件路径,我们可以打开视频文件,然后逐帧读取并处理每一帧图像。 抓取图片,即从视频流中截取单个图像,是视频处理中的常见任务。在VFW中,可以通过在...
在本文中,我们将深入探讨如何使用DirectShow来抓取影片帧,这一过程对于视频处理、分析或者截图等应用至关重要。 一、DirectShow简介 DirectShow是Windows平台上的一个组件,它基于COM(Component Object Model)...
例如,要从名为`input.mp4`的视频中抓取第一帧为图片,可以使用以下命令: ```bash ffmpeg -i input.mp4 output.png ``` 这里,`-i`参数指定输入文件,`output.png`则是保存的图片文件名。默认情况下,FFmpeg会...
4. 图像处理:除了处理音频和视频,FFmpeg还可以处理静态图像,如转换图像格式、提取视频帧为图片等。 5. 网络流传输:FFmpeg能够从HTTP、RTSP、RTMP等各种网络协议源中拉取媒体流,并将其推送到其他服务器或保存到...
grabImage()方法可以抓取视频中的单个帧,而grab()方法可以抓取视频中的多个帧。 知识点4:图像处理 图像处理是指对图像进行处理和处理的过程。JavaCV提供了多种图像处理方法,包括图像滤波、图像缩放、图像旋转等...
"明英 WISE BBS 简体中文V14.0 DirectShow抓取影片帧" 是一个专门针对视频处理的软件工具,主要用于从视频流中捕获静态图像帧。这个版本是专为中国用户设计的简体中文版,旨在简化操作,方便国内用户使用。在该软件...
2. **视频数据抓取**:在filter graph中,可以设置回调函数来抓取视频帧数据。当数据在滤镜之间传输时,可以通过注册IAMSampleGrabber接口的SampleCB或BufferCB回调函数来截取数据。SampleCB提供完整的样本对象,而...