C# 从视频文件的一部分中提取帧

2024-04-28

使用 AForge ffmpeg 包装器,您可以使用 VideoFileReader 类从视频中提取帧并将其保存为位图。

请参阅以下示例:提取 .avi 文件的帧 https://stackoverflow.com/questions/17825677/extracting-frames-of-a-avi-file

我的问题是你无法指定从哪里开始读取帧。它始终从视频文件的开头开始。

但是,如果我想提取两个小时长的视频文件中间的帧该怎么办?使用该类,您必须解析整个第一个小时才能到达这些帧。

有谁知道如何实现这一目标?


如果您知道要从视频中的哪个位置开始阅读,只需跳过适当数量的帧即可;无需处理其中任何一个。

当然,这是假设您知道要开始读取的确切帧号,您可以通过将帧速率乘以要执行提取的时间来计算该帧号。在您的示例中,如果视频长两个小时并且您想从中间提取帧......

VideoFileReader reader = new VideoFileReader();
reader.Open("file.avi");

// Jump to 1 hour into the video
int framesToSkip = reader.FrameRate * 3600;    // 1 hour = 3600 seconds
for (int i = 0; i < framesToSkip; i++)
    reader.ReadVideoFrame();

// Now the next time ReadVideoFrame() is called, we will get the frame at the 1 hour mark

这假设.FrameRate属性返回以每秒帧数为单位的值。不幸的是文档 http://www.aforgenet.com/framework/docs/没有说,所以我不确定它如何处理具有非整数帧速率的视频文件(即 29.97 是常见的帧速率。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 从视频文件的一部分中提取帧 的相关文章

  • 如何使用android ndk r9b为Android编译FFMPEG

    我想设计一个Android应用程序 可以通过FFMPEG命令播放和编辑视频 但我不知道如何在Android上使用FFMPEG 我尝试过从Google搜索到的许多方法 但它们太旧了 无法实现 现在 FFMPEG的最新版本是2 1 1 Andr
  • 无法使用c#更改视频捕获分辨率

    我正在尝试使用 C 中的 DirectShowNet 更改默认网络摄像头分辨率 据我所知 我需要通过调用 windows win32 api dll 中内置的 VideoInfoHeader 类来更改它以进行 avi 捕获 我有来自 Dir
  • 采用 std::vector 或 std::array 的模板函数

    我有一个函数 当前接受 2 个向量 其中可以包含任何普通的旧数据 template
  • 更新 Azure Blob 上的 LastModified

    我正在移植代码以使用 C 中的 Azure 存储 SDK 传统上 我称其为更新修改文件的上次写入 修改时间 File SetLastWriteTimeUtc fileName lastWriteTimeUtc 要更新 blob 的上次修改时
  • strtok() 使用安全吗[重复]

    这个问题在这里已经有答案了 我读到了很多负面的东西strtok 有人说它已经过时 有人说它不是线程安全的 等等 那么真相是什么 我可以使用吗strtok 它是线程安全的吗 Note 我正在使用 Visual C 您可以使用它 它是标准库的一
  • 如何通过覆盖 MSBuild 目标来防止外语资源生成?

    我正在致力于减少大型 C ASP NET 解决方案的编译时间 我们的解决方案使用通常的 resx 文件方法翻译成大约十几种外语 这些资源文件的解析和编译极大地减慢了我们的编译时间 并且是日常的挫败感 我知道可以创建自定义资源提供程序并摆脱
  • 如何通过 libwebsocket 发送异步数据?

    我正在将 Warmcat 的 libwebsocket C 库用于小型 Websocket 服务器 我已经启动并运行了这些示例 并且可以发送数据以响应从 websocket 接收数据 例如回显发送的反向字节 但是 我无法弄清楚如何在不使用
  • 如何从不同的线程访问控件?

    如何从创建控件的线程以外的线程访问控件 避免跨线程错误 这是我的示例代码 private void Form1 Load object sender EventArgs e Thread t new Thread foo t Start p
  • 选择initializer_list迭代器定义

    Why std initializer list
  • QSpinBox 输入 NaN 作为有效值

    我正在尝试扩展 QSpinBox 以能够输入 NaN 或 nan 作为有效值 根据文档 我应该使用 textFromValue valueFromText 和 validate 函数来完成此操作 但我无法让它工作 因为它仍然不允许我输入除数
  • FluentAssertions ShouldNotThrow 无法识别异步方法/Func

    我正在尝试检查异步方法是否抛出具体异常 为此 我使用 MSTEST 和 FluentAssertions 2 0 1 我已经检查过这个关于 Codeplex 的讨论 http fluentassertions codeplex com wo
  • 检查两个函数或成员函数指针的签名是否相等

    我编写了一些代码来检查自由函数的签名是否等于成员函数的签名等 它比较提取的返回类型和函数参数 include
  • 如何在 C++ 运行时更改 QML 对象的属性?

    我想在运行时更改 QML 对象的文本 我尝试如下 但文本仍然为空 这是后端类 class BackEnd public QObject Q OBJECT Q PROPERTY QString userFieldText READ userF
  • linq where 子句和 count 导致 null 异常

    除非 p School SchoolName 结果为 null 否则下面的代码将起作用 在这种情况下 它会导致 NullReferenceException if ExistingUsers Where p gt p StudentID i
  • 使用 dateTimePicker 在 DataGridView 中编辑日期

    我有一个DateTime我的 WinForms 中的专栏DataGridView 目前只能通过手动输入日期来编辑该字段 例如 2010 09 02 需要什么才能拥有一个DateTimePicker 或同等 用作编辑器 DataGridVie
  • 如何禁用基于 ValidationRule 类的按钮?

    如何禁用基于 ValidationRule 类的 WPF 按钮 下面的代码可以很好地突出显示 TextBox
  • 在 C# .NET 中对非 ASCII 字符进行编码

    我想向我的应用程序发送的电子邮件添加自定义标头 标头名称只能包含 ASCII 字符 但对于值和用户可能会输入 UTF 8 字符 我必须对它们进行 Base64 编码 此外 我还必须将它们解码回 UTF 8 以便在 UI 中向用户显示它们 最
  • 如何释放字符串未使用的容量

    我正在程序中处理很多字符串 这些字符串数据在读入我的程序后的整个生命周期内都不会改变 但由于 C 字符串保留了容量 因此浪费了大量肯定不会被使用的空间 我尝试释放这些空间 但没有成功 以下是我尝试过的简单代码 string temp 123
  • 为什么 C++ 标准没有将 sizeof(bool) 定义为 1?

    Size of char signed char and unsigned char由 C 标准本身定义为 1 个字节 我想知道为什么它没有定义sizeof bool also C 03 标准 5 3 3 1 说 sizeof char s
  • 强制函数调用的顺序?

    假设我有一个抽象基类 并且我想要一个必须由派生类实现的纯虚方法 但我想确保派生方法以特定顺序调用函数 我可以做什么来强制执行它 I E base class virtual void doABC 0 virtual void A 0 vir

随机推荐

  • iOS7 iPad 横向应用程序,使用 UIImagePickerController

    我相信这是一个常见问题 如果您使用的是 iOS7 并且您的 iPad 应用程序仅是横向的 但您想使用UIImagePickerController有来源UIImagePickerControllerSourceTypePhotoLibrar
  • 如何在.NET 中解压使用 Lempel-Ziv Haruyasu 算法压缩的字节?

    如何在 NET 中解压缩这些 LZH 格式之一 提示 我更愿意使用已经实现的功能 而不是尽可能实现 我所处的情况是服务器向我发送了一个 XML 文档 该文档有一些 Base64 编码的压缩数据 从 XML 中获取字节后 我盲目地尝试了Def
  • 使用 Selenium 的 CSS 模块?

    我正在使用 React Redux 和 CSS 模块开发一个 Web 应用程序 对于我正在使用的单元测试身份对象代理 https github com keyanzhang identity obj proxy模拟我的 CSS 导入 然而
  • 为什么C++中的内置堆栈接口没有clear()函数?

    在进一步使用它之前 我必须清空堆栈 我确实明白可以这样做 while mystack empty mystack pop 没有这个功能有什么具体原因吗 或者只是第一次制作时没有人感受到它的要求而被排除在外 另外 Java 中的堆栈接口确实有
  • 如何复制 tf.keras.models.Model 子类?

    我需要复制 keras 模型 但我无法知道可以做什么 除非该模型is not a tf keras models Model 子类 Note 使用copy deepcopy 将在没有任何错误的情况下工作 但是每当使用副本时都会导致另一个错误
  • ASP.NET MVC:如何在返回状态代码 404 的同时提供内容? [复制]

    这个问题在这里已经有答案了 可能的重复 如何配置 IIS 以使用自定义内容提供 404 响应 https stackoverflow com questions 2551959 how to configure iis to serve m
  • Horizo​​ntalScrollView 中带有 RecyclerView 的 2D 列表

    我正在尝试构建一个视图 允许用户水平和垂直滚动类似 Excel 的结构 我最初的想法是将 RecyclerView 带有 LinearManager 放入 Horizo ntalScrollView 中 但这似乎不起作用 这是我的代码
  • 动画 UIButton 上的用户交互

    我正在尝试在 Xcode 4 2 中制作一个针对 iPhone 的小应用程序 我想要的是一个UIButton使屏幕向下动画 当你按下它时 你将它的 alpha 设置为 0 我找到了一种方法UIView能够处理用户交互的类 并得出以下代码 U
  • MongooseServerSelectionError:连接到副本集时连接 ECONNREFUSED ::1:27017

    我刚刚将 mongoose 和 MongoDB 升级到最新版本并转换了mongod实例到副本集 用于测试的单个节点 但现在当节点应用程序连接到它时 我得到MongooseServerSelectionError connect ECONNR
  • Jetty 在 JNDI 上下文中绑定数据源

    我想以编程方式将 DataSource 对象绑定到 eclipse jetty 的 JNDI 上下文 我需要用于测试目的 这是我现在的一段代码 server new Server SERVER PORT webAppContext new
  • 从适用于 Android 的 Facebook SDK 将内容添加到 Facebook feed 对话框

    在我的 Android 应用程序中 我希望用户在他们的墙上 共享 我的应用程序 因此我希望他们在他们的墙上发布预定义的内容状态 如何自定义墙状态 我想添加我的应用程序图标和一些耀斑文本 下载 Facebook SDK 并将其导入到您的项目中
  • Kotlin 的不同类型的 reduce() 函数

    我正在查看数组扩展函数并发现reduce one inline fun
  • 跨不同的 viewController 使用相同的 UIWebView

    TL DR 我需要实现一个在多个 ViewController 之间共享的单例 UIWebVIew 这个问题包含了我迄今为止的所有方法 应用程序委托 property strong nonatomic UIWebView singleWeb
  • 使用 Google Analytics iOS SDK 进行应用内购买跟踪

    我想使用 Google Analytics SDK for iOS v2 跟踪应用内购买 如其中所示电子商务追踪 https developers google com analytics devguides collection ios
  • 如何使用 PHP 制作 pdf 文件

    如何用 PHP 制作 PDF 文件 我想要制作的是学生名单 所以我想查询数据库 获取信息 并在用户单击 生成学生列表 时将其以 PDF 形式提供给用户 你有两个不错的选择 首先是用于操作 pdf 的标准 php 库 https www ph
  • C#等待串口数据

    我试图通过 C 应用程序从指纹扫描仪获取数据 但在指纹发送之前 我的整个代码都会执行 我尝试使用延迟功能System Threading Thread Sleep 1000 因此它可以在下一步执行之前获取数据 但这一切似乎都是徒劳的 任何人
  • CSS 中的边框图像 svg(颜色)样式?

    是否可以从CSS样式填充自定义边框图像 我应该使用哪个属性 E g border image source url assets images dots new svg border color red doesn t work fill
  • 动态创建多个上传文件

    我想知道是否有人知道动态创建上传表单的最佳方法 这就是我想要实现的目标 下面显示的代码允许一次上传 我想要一个按钮 按下该按钮后 应添加另一种形式用于文件上传 因此 如果我想上传 假设有 7 个文件 我想按按钮 7 次来创建这些上传表单 每
  • 我无法在 docker 中安装 opencv-contrib-python

    我尝试安装opencv contrib python但我无法让它在 docker 上工作 它说找不到满足 opencv contrib python 要求的版本 I tried pip install opencv contrib pyth
  • C# 从视频文件的一部分中提取帧

    使用 AForge ffmpeg 包装器 您可以使用 VideoFileReader 类从视频中提取帧并将其保存为位图 请参阅以下示例 提取 avi 文件的帧 https stackoverflow com questions 178256