如何将 MKV 字节读取为视频?

2023-11-29

我正在接收 MKV 视频片段(以字节为单位)。我需要获取它的第一帧以供以后处理,而不将视频保存在磁盘中。对于类似的图像问题,我使用 OpenCV 或 PIL,一切正常,但是,我无法对视频数据执行相同的操作。有什么技巧可以帮助我将视频从字节读取到内存对象,以便以后使用 OpenCV 或其他库进行处理吗?


因为我没有你的bytes缓冲区,我刚刚创建了一个 MKV 视频文件ffmpeg像这样:

ffmpeg -i SomeVideo.avi -f matroska -vcodec libx264 video.mkv

然后我安装了imageio with:

pip install imageio

然后我将整个 MKV 视频加载到内存中,这样我就有了一些看起来与bytes您收到的对象存储在我的变量中content:

import imageio

# Get bytes of MKV video
with open('video.mkv', 'rb') as file: 
    content = file.read()

现在我应该已经和你一样了。仅供参考,前几个字节content看起来像这样:

b'\x1aE\xdf\xa3\x01\x00\x00\x00\x00\x00\x00#B\x86\x81\x01B\xf7\x81\x01'

那么,让我们继续吧。

# Wrap the content in a BytesIO and get an ffmpeg reader to read it 
vid = imageio.get_reader(BytesIO(content),  'ffmpeg')

我现在可以像这样打印每帧的平均值:

for num, image in enumerate(vid.iter_data()): 
    print(image.mean())

或者获取元数据并像这样打印:

metadata = vid.get_meta_data()                                                             

print(metadata)

{'plugin': 'ffmpeg',
 'nframes': 750,
 'ffmpeg_version': '4.1 built with Apple LLVM version 10.0.0 (clang-1000.11.45.5)',
 'fps': 25.0,
 'source_size': (1280, 720),
 'size': (1280, 720),
 'duration': 30.0}

Keywords:Python、视频、帧、单帧、FFmpeg、imageio、单帧、BytesIO、字节、MKV、Matroska。

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

如何将 MKV 字节读取为视频? 的相关文章

随机推荐

  • iPhone 上的 CSS 过滤器速度慢?

    我有一个带有这个 css 类的 div pos webkit filter brightness 0 5 moz filter britghtness 0 5 o filter brightness 0 5 ms filter bright
  • 将 A4 PDF 页面拆分为两个 A5,然后再拆分回来

    我有一个 A4 页的 PDF 出于打印原因 每页包含两张相同的 A5 页 我想要在我的 Java 程序中做的是拆分这些页面 并使用每个唯一的 A5 页面零到多次作为模板来添加 替换一些文本 完成此操作后 我想将 A5 页再次粘回 A4 页
  • 在 C++11/14 中按值返回局部变量是否会导致在不涉及复制/移动时由右值构造返回值?

    我知道在以下情况下 编译器可以自由地移动构造来自makeA 但也可以自由地删除副本或完全移动 struct A A A A A A makeA A localA return localA 我想知道编译器是否允许构造类型的对象A来自类型的本
  • Kubernetes 服务无法访问

    我在 2 个 Rasberry Pi 型号 3 和 3B 上创建了一个 Kubernetes 集群 用作 Kubernetes 游乐场 我已经部署了一个 postgresql 和一个 spring boot 应用程序 称为meal plan
  • 在 bash 脚本中查找文件夹名称的一部分

    尝试在文件夹结构中查找特定部分 但我在 bash 脚本中使用 RegEx 时遇到问题 此外 我的正则表达式说得不太流利 我需要知道我传递给 bash 脚本的文件夹 类型 根据当前所在的文件夹 类型 需要运行不同的操作 以下示例文件夹结构 h
  • 从 HTML 表单调用 servlet,但从未调用 servlet [重复]

    这个问题在这里已经有答案了 我从 html 表单调用 servlet servlet 获取表单数据 并将该表单数据插入数据库 但是当我单击提交按钮时 错误页面出现 请帮助我的 servlet 代码出了什么问题 我的servlet代码 imp
  • 使用 JMH 时出现奇怪的输出

    我正在使用 jmh 来对一个简单的应用程序进行基准测试 来自 SO 问题java fork join 中出现意外的可扩展性 使用 Maven 并遵循命令行方法 如建议的http openjdk java net projects code
  • Java - 如何检查另一个(非 Java)进程是否正在 Linux 上运行

    我遇到了一些奇怪的问题 我们正在使用 Xvfb 虚拟桌面管理器 并希望在继续之前确保它正在运行 使用纯 shell 我可以轻松做到这一点 ps ef grep Xvfb grep v grep 这正是我所需要的 一行包含有关 Xvfb 过程
  • 如何进一步处理导致 Ruby FasterCSV 库抛出 MalformedCSVError 的数据行?

    传入数据文件包含格式错误的 CSV 数据 例如非转义引号 以及 有效 CSV 数据 例如包含换行符的字段 如果检测到 CSV 格式错误 我想对该数据使用替代例程 使用以下示例代码 为简单起见进行了缩写 FasterCSV open file
  • 应该避免使用 DataFrame 函数 groupBy 吗?

    This link and others告诉我火花groupByKey如果有大量键 则不要使用 因为 Spark 会打乱所有键 这同样适用于groupBy功能也一样 或者这是不同的东西 我问这个是因为我想做这个问题尝试这样做 但我有大量的钥
  • Win7和Win XP关机前运行程序

    我知道有关于此的线程 我找到了这个 如何安排任务在关闭窗口时运行但这对我来说失败了 我在 LabView 中编写了一个小程序并用它制作了一个 exe 当我在正常的 Windows 操作中双击 exe 时 它 运行完美 只需几秒钟即可完成 然
  • #include 文件指令不起作用

    所以我需要照顾这个新网站 http www kineformeconcept com mtl index shtml 自从客户端移动到托管位置后 菜单就不再显示 我从未使用过 include file whatever html 指令 我现
  • 在 C# 中使用 RotateFlip 旋转图像

    我有这段代码用于在 C Windows 窗体应用程序中的 if 循环中旋转图像 但窗体在窗体输出中不显示任何内容 有人可以帮忙吗 this splitContainer1 Panel2 Controls Add PictureBox1 Pi
  • 在Python中分割列表

    我正在用 Python 编写一个解析器 我已将输入字符串转换为标记列表 例如 2 x 3 1 4 3 x 2 我希望能够将列表拆分为多个列表 例如str split 功能 但似乎没有办法做到my list split 有任何想法吗 Than
  • ObjectStateManager 中已存在具有相同键的对象。 ObjectStateManager 无法跟踪具有相同键的多个对象

    基本上 我有一个表 其中包含一家公司的一些属性 这是 主 表 它们的 ID 用于许多其他表 我基本上是通过这个方法找到他们的ID private Company currentcompany Company cuco db Companie
  • Magento Catalog_category_flat_store_1 不存在

    我有一个运行 Magento CE 1 7 的现有商店 突然从今天早上开始 没有任何代码更新 我收到以下错误 a 5 i 0 s 111 SQLSTATE 42S02 未找到基表或视图 1146 表 XXXXXX catalog categ
  • 如何应用TextBox控件模板?

    我正在尝试简化一些代码并提高可维护性 我最初正在寻找一种使文本框向左对齐的方法 它可以收缩和扩展到最大值 而无需在达到最大值后在网格单元内居中 所以我开始编写一些这样的代码
  • preload.php 文件在哪里?它是如何生成的?

    对于 Symfony 5 1 和 PHP 7 4 我想添加preload php在opcache中 Symfony 文档 在容器编译期间 例如 运行cache clear命令时 Symfony 在 config 目录中生成一个名为 prel
  • 如何将表列(通过 SQL 查询返回)作为 CheckedListBox 中的项目列出?

    如果我有下表 canAssign 1 有没有办法添加列标题文本 例如 canAssign等 到CheckedListBox作为用户可以检查的标签 我找到的所有答案都列出了value作为标签 像这样 1 而不是这个 canAssign 仅作为
  • 如何将 MKV 字节读取为视频?

    我正在接收 MKV 视频片段 以字节为单位 我需要获取它的第一帧以供以后处理 而不将视频保存在磁盘中 对于类似的图像问题 我使用 OpenCV 或 PIL 一切正常 但是 我无法对视频数据执行相同的操作 有什么技巧可以帮助我将视频从字节读取