pylibde265


Namepylibde265 JSON
Version 0.0.2 PyPI version JSON
download
home_pageNone
Summarypython binding implementation of libde265, based on cython
upload_time2025-02-01 12:29:39
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords libde265 h265 vedio decode mp4
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <div align="center">
  <p>
    <a href="https://github.com/Puiching-Memory/pylibde265" target="_blank">
      <img width="100%" src="./multimedia/image/title.png" alt="pylibde265 head image"></a>
  </p>

<div>
    <a href=""><img src="https://img.shields.io/badge/Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white" alt="windows:support"></a>
    <br>
    <a href=""><img src="https://img.shields.io/github/downloads/Puiching-Memory/pylibde265/total" alt="downloads:all"></a>
    <a href=""><img src="https://img.shields.io/github/downloads/Puiching-Memory/pylibde265/latest/total" alt="downloads:latest_verson"></a>
    <a href=""><img src="https://img.shields.io/pypi/dm/pylibde265" alt="downloads-dm:pypi"></a>
    <a href=""><img src="https://img.shields.io/pypi/v/pylibde265" alt="version:pypi"></a>
    <a href=""><img src="https://img.shields.io/github/directory-file-count/Puiching-Memory/pylibde265" alt="count:file/dir"></a>
    <a href=""><img src="https://img.shields.io/github/repo-size/Puiching-Memory/pylibde265" alt="count:size"></a>
  </div>

  [中文](https://github.com/Puiching-Memory/pylibde265/blob/main/README_zh.md) | [English](https://github.com/Puiching-Memory/pylibde265/blob/main/README.md)

</div>

# pylibde265

Decode HEVC(H.265) video in python

在python中解码HEVC(H.265)视频

### Warning! This repository is still in early release, the code is subject to frequent disruptive changes, and we cannot guarantee compatibility with the current version

### 警告!此存储库仍处于早期版本,代码会经常有破坏性更改,我们无法保证目前版本的兼容性

# 概念

<div>
  <a href=""><img src="./multimedia/image/vedio_steam.jpg" alt="image:vedio_steam"></a>
</div>

常见的视频文件,如.mp4是一类容器,其包含了视频流(HEVC编码)和音频流(ACC编码)数据。

libde265负责将HEVC编码的视频流解码至原始比特流,此类文件通常以.265或.hevc作为后缀名。

目前版本中,不支持直接解码.mp4文件,你需要手动分离视频文件的视频部分。

要想从MP4中提取h265流,你可以使用:ffmpeg,gpac(mp4box),Bento4

~~但是你都使用了这些框架了,那其实解码h265他们也能做~~

# 快速开始

```
pip install pylibde265
```

```python
"""
to run this example, you need install pylibde265 and matplotlib and colour-science package.
---
here is my environment:
matplotlib==3.10.0
colour-science==0.4.6
"""

import pylibde265.pyde265
import matplotlib.pyplot as plt
import colour
import os

print(dir(pylibde265.pyde265))
print(f"libde265 version: {pylibde265.pyde265.get_version()}")

VEDIO_PATH = "./multimedia/video/Kinkaku-ji.h265"
NUMBER_OF_THREADS = os.cpu_count()

decoder = pylibde265.pyde265.decoder(NUMBER_OF_THREADS)

error = decoder.load(VEDIO_PATH)
frame = 0
for image_martix in decoder.decode():
    frame += 1

    print(f"frame ------{frame}------")
    print(f"width: {decoder.w} height: {decoder.h}")
    print(f"chroma: {decoder.chroma} bps: {decoder.bps}")
    print(f"pts: {decoder.pts} ttd: {decoder.ttd} ttd_max: {decoder.ttd_max}")

    image_martix = colour.YCbCr_to_RGB(
        image_martix,
        in_bits=8,
        in_int=True,
        in_legal=True,
        out_bits=8,
        out_legal=True,
    )
    plt.imshow(image_martix)
    plt.show()

    break

```

![example_preview.png](./multimedia/image/example.png)

代码解释:

# 深入了解

* 在线文档(待建)

# 性能

* 目前,cython层的部分矩阵处理导致了延迟,4k视频下无法保持24帧正常播放。
* 总体测量下,当前版本性能损失在50%左右
* 性能最佳实践报告(待建)

| 分辨率 | 视频                                                                                 | FPS(libde265) | FPS(pylibde265) | FPS(后处理) |
| ------ | ------------------------------------------------------------------------------------ | ------------- | --------------- | ----------- |
| 720p   | [bbb-1280x720-cfg06](https://www.libde265.org/hevc-bitstreams/bbb-1280x720-cfg06.mkv)   | 195           | 83              | 56          |
| 1080p  | [bbb-1920x1080-cfg06](https://www.libde265.org/hevc-bitstreams/bbb-1920x1080-cfg06.mkv) | 101           | 47              | 29          |
| 4k     | [tos-4096x1720-tiles](https://www.libde265.org/hevc-bitstreams/tos-4096x1720-tiles.mkv) | 35            | 19              | 11          |

<img src="./multimedia/image/performance-0.0.1a.webp" alt="image:vedio_steam">

线程性能分析:

测试环境:

test/vis_performance.py

| 设置       | 状态 |
| ---------- | ---- |
| deblocking | off  |
| SAO        | off  |

| 分辨率 | 文件名              | 范围     |
| ------ | ------------------- | -------- |
| 4k     | tos-4096x1720-tiles | 前3000帧 |
| 1080p  | bbb-1920x1080-cfg06 | 前3000帧 |
| 720p   | bbb-1280x720-cfg06  | 前3000帧 |

| CPU             | GPU       | 系统                  | 电源性能设置 | libde265 | pylibde265 |
| --------------- | --------- | --------------------- | ------------ | -------- | ---------- |
| intel@i5-12500H | RTX4060Ti | windows11(22631.3810) | 平衡         | 1.0.15   | 0.0.1a     |

# 从源代码构建

1. 下载存储库 `git clone https://github.com/Puiching-Memory/pylibde265.git`
2. 依据本地构建清单配置环境
3. 安装编译器(Visual Studio 生成工具 2022 or Visual Studio 2022 C++开发套件)
4. 运行 `python -m build`

环境需求-开发:

```
pip install -r requirements_dev.txt
git clone https://github.com/strukturag/libde265.git
cd libde265
mkdir build
cd build
cmake ..
cmake --build . --config Release
```

# 常见问题QA

| 问题Q        | 回答A             | 日期       | 版本  |
| ------------ | ----------------- | ---------- | ----- |
| 支持什么系统 | 只支持windows系统 | 2025.01.31 | 0.0.2 |
| 硬件要求     | 无                | 2025.01.31 | 0.0.2 |

# 如何贡献

* 不接受来自gitee/gitlab等镜像站的合并请求

# 路线图

* [ ] 帧解码性能改进
* [ ] 支持GPU处理
* [ ] 流式加载数据(而不是在开始解码前完全载入)
* [ ] 可修改的设置项

# 致谢

作者:

* @梦归云帆

参考:

* [libde265](https://github.com/strukturag/libde265)--C/C++仓库:作者[@strukturag](https://github.com/strukturag)
* [pyde265](https://github.com/kloppjp/pyde265)--提供linux系统的py绑定:作者[@kloppjp](https://github.com/kloppjp)

统计数据标签:

* https://dev.to/envoy_/150-badges-for-github-pnk
* https://shields.io/

数据分析:

* https://pypistats.org/packages/pylibde265

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "pylibde265",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "libde265, h265, vedio, decode, mp4",
    "author": null,
    "author_email": "\u68a6\u5f52\u4e91\u5e06 <1138663075@qq.com>",
    "download_url": "https://files.pythonhosted.org/packages/ea/ae/8ad4a5824b6726f1b6b93ebc4d50ef4aaad91c3abdb9923b565894bf1e0e/pylibde265-0.0.2.tar.gz",
    "platform": null,
    "description": "<div align=\"center\">\r\n  <p>\r\n    <a href=\"https://github.com/Puiching-Memory/pylibde265\" target=\"_blank\">\r\n      <img width=\"100%\" src=\"./multimedia/image/title.png\" alt=\"pylibde265 head image\"></a>\r\n  </p>\r\n\r\n<div>\r\n    <a href=\"\"><img src=\"https://img.shields.io/badge/Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white\" alt=\"windows:support\"></a>\r\n    <br>\r\n    <a href=\"\"><img src=\"https://img.shields.io/github/downloads/Puiching-Memory/pylibde265/total\" alt=\"downloads:all\"></a>\r\n    <a href=\"\"><img src=\"https://img.shields.io/github/downloads/Puiching-Memory/pylibde265/latest/total\" alt=\"downloads:latest_verson\"></a>\r\n    <a href=\"\"><img src=\"https://img.shields.io/pypi/dm/pylibde265\" alt=\"downloads-dm:pypi\"></a>\r\n    <a href=\"\"><img src=\"https://img.shields.io/pypi/v/pylibde265\" alt=\"version:pypi\"></a>\r\n    <a href=\"\"><img src=\"https://img.shields.io/github/directory-file-count/Puiching-Memory/pylibde265\" alt=\"count:file/dir\"></a>\r\n    <a href=\"\"><img src=\"https://img.shields.io/github/repo-size/Puiching-Memory/pylibde265\" alt=\"count:size\"></a>\r\n  </div>\r\n\r\n  [\u4e2d\u6587](https://github.com/Puiching-Memory/pylibde265/blob/main/README_zh.md) | [English](https://github.com/Puiching-Memory/pylibde265/blob/main/README.md)\r\n\r\n</div>\r\n\r\n# pylibde265\r\n\r\nDecode HEVC(H.265) video in python\r\n\r\n\u5728python\u4e2d\u89e3\u7801HEVC(H.265)\u89c6\u9891\r\n\r\n### Warning! This repository is still in early release, the code is subject to frequent disruptive changes, and we cannot guarantee compatibility with the current version\r\n\r\n### \u8b66\u544a\uff01\u6b64\u5b58\u50a8\u5e93\u4ecd\u5904\u4e8e\u65e9\u671f\u7248\u672c\uff0c\u4ee3\u7801\u4f1a\u7ecf\u5e38\u6709\u7834\u574f\u6027\u66f4\u6539\uff0c\u6211\u4eec\u65e0\u6cd5\u4fdd\u8bc1\u76ee\u524d\u7248\u672c\u7684\u517c\u5bb9\u6027\r\n\r\n# \u6982\u5ff5\r\n\r\n<div>\r\n  <a href=\"\"><img src=\"./multimedia/image/vedio_steam.jpg\" alt=\"image:vedio_steam\"></a>\r\n</div>\r\n\r\n\u5e38\u89c1\u7684\u89c6\u9891\u6587\u4ef6\uff0c\u5982.mp4\u662f\u4e00\u7c7b\u5bb9\u5668\uff0c\u5176\u5305\u542b\u4e86\u89c6\u9891\u6d41(HEVC\u7f16\u7801)\u548c\u97f3\u9891\u6d41(ACC\u7f16\u7801)\u6570\u636e\u3002\r\n\r\nlibde265\u8d1f\u8d23\u5c06HEVC\u7f16\u7801\u7684\u89c6\u9891\u6d41\u89e3\u7801\u81f3\u539f\u59cb\u6bd4\u7279\u6d41\uff0c\u6b64\u7c7b\u6587\u4ef6\u901a\u5e38\u4ee5.265\u6216.hevc\u4f5c\u4e3a\u540e\u7f00\u540d\u3002\r\n\r\n\u76ee\u524d\u7248\u672c\u4e2d\uff0c\u4e0d\u652f\u6301\u76f4\u63a5\u89e3\u7801.mp4\u6587\u4ef6\uff0c\u4f60\u9700\u8981\u624b\u52a8\u5206\u79bb\u89c6\u9891\u6587\u4ef6\u7684\u89c6\u9891\u90e8\u5206\u3002\r\n\r\n\u8981\u60f3\u4eceMP4\u4e2d\u63d0\u53d6h265\u6d41\uff0c\u4f60\u53ef\u4ee5\u4f7f\u7528\uff1affmpeg,gpac(mp4box),Bento4\r\n\r\n~~\u4f46\u662f\u4f60\u90fd\u4f7f\u7528\u4e86\u8fd9\u4e9b\u6846\u67b6\u4e86\uff0c\u90a3\u5176\u5b9e\u89e3\u7801h265\u4ed6\u4eec\u4e5f\u80fd\u505a~~\r\n\r\n# \u5feb\u901f\u5f00\u59cb\r\n\r\n```\r\npip install pylibde265\r\n```\r\n\r\n```python\r\n\"\"\"\r\nto run this example, you need install pylibde265 and matplotlib and colour-science package.\r\n---\r\nhere is my environment:\r\nmatplotlib==3.10.0\r\ncolour-science==0.4.6\r\n\"\"\"\r\n\r\nimport pylibde265.pyde265\r\nimport matplotlib.pyplot as plt\r\nimport colour\r\nimport os\r\n\r\nprint(dir(pylibde265.pyde265))\r\nprint(f\"libde265 version: {pylibde265.pyde265.get_version()}\")\r\n\r\nVEDIO_PATH = \"./multimedia/video/Kinkaku-ji.h265\"\r\nNUMBER_OF_THREADS = os.cpu_count()\r\n\r\ndecoder = pylibde265.pyde265.decoder(NUMBER_OF_THREADS)\r\n\r\nerror = decoder.load(VEDIO_PATH)\r\nframe = 0\r\nfor image_martix in decoder.decode():\r\n    frame += 1\r\n\r\n    print(f\"frame ------{frame}------\")\r\n    print(f\"width: {decoder.w} height: {decoder.h}\")\r\n    print(f\"chroma: {decoder.chroma} bps: {decoder.bps}\")\r\n    print(f\"pts: {decoder.pts} ttd: {decoder.ttd} ttd_max: {decoder.ttd_max}\")\r\n\r\n    image_martix = colour.YCbCr_to_RGB(\r\n        image_martix,\r\n        in_bits=8,\r\n        in_int=True,\r\n        in_legal=True,\r\n        out_bits=8,\r\n        out_legal=True,\r\n    )\r\n    plt.imshow(image_martix)\r\n    plt.show()\r\n\r\n    break\r\n\r\n```\r\n\r\n![example_preview.png](./multimedia/image/example.png)\r\n\r\n\u4ee3\u7801\u89e3\u91ca:\r\n\r\n# \u6df1\u5165\u4e86\u89e3\r\n\r\n* \u5728\u7ebf\u6587\u6863(\u5f85\u5efa)\r\n\r\n# \u6027\u80fd\r\n\r\n* \u76ee\u524d\uff0ccython\u5c42\u7684\u90e8\u5206\u77e9\u9635\u5904\u7406\u5bfc\u81f4\u4e86\u5ef6\u8fdf\uff0c4k\u89c6\u9891\u4e0b\u65e0\u6cd5\u4fdd\u630124\u5e27\u6b63\u5e38\u64ad\u653e\u3002\r\n* \u603b\u4f53\u6d4b\u91cf\u4e0b\uff0c\u5f53\u524d\u7248\u672c\u6027\u80fd\u635f\u5931\u572850%\u5de6\u53f3\r\n* \u6027\u80fd\u6700\u4f73\u5b9e\u8df5\u62a5\u544a(\u5f85\u5efa)\r\n\r\n| \u5206\u8fa8\u7387 | \u89c6\u9891                                                                                 | FPS(libde265) | FPS(pylibde265) | FPS(\u540e\u5904\u7406) |\r\n| ------ | ------------------------------------------------------------------------------------ | ------------- | --------------- | ----------- |\r\n| 720p   | [bbb-1280x720-cfg06](https://www.libde265.org/hevc-bitstreams/bbb-1280x720-cfg06.mkv)   | 195           | 83              | 56          |\r\n| 1080p  | [bbb-1920x1080-cfg06](https://www.libde265.org/hevc-bitstreams/bbb-1920x1080-cfg06.mkv) | 101           | 47              | 29          |\r\n| 4k     | [tos-4096x1720-tiles](https://www.libde265.org/hevc-bitstreams/tos-4096x1720-tiles.mkv) | 35            | 19              | 11          |\r\n\r\n<img src=\"./multimedia/image/performance-0.0.1a.webp\" alt=\"image:vedio_steam\">\r\n\r\n\u7ebf\u7a0b\u6027\u80fd\u5206\u6790\uff1a\r\n\r\n\u6d4b\u8bd5\u73af\u5883\uff1a\r\n\r\ntest/vis_performance.py\r\n\r\n| \u8bbe\u7f6e       | \u72b6\u6001 |\r\n| ---------- | ---- |\r\n| deblocking | off  |\r\n| SAO        | off  |\r\n\r\n| \u5206\u8fa8\u7387 | \u6587\u4ef6\u540d              | \u8303\u56f4     |\r\n| ------ | ------------------- | -------- |\r\n| 4k     | tos-4096x1720-tiles | \u524d3000\u5e27 |\r\n| 1080p  | bbb-1920x1080-cfg06 | \u524d3000\u5e27 |\r\n| 720p   | bbb-1280x720-cfg06  | \u524d3000\u5e27 |\r\n\r\n| CPU             | GPU       | \u7cfb\u7edf                  | \u7535\u6e90\u6027\u80fd\u8bbe\u7f6e | libde265 | pylibde265 |\r\n| --------------- | --------- | --------------------- | ------------ | -------- | ---------- |\r\n| intel@i5-12500H | RTX4060Ti | windows11(22631.3810) | \u5e73\u8861         | 1.0.15   | 0.0.1a     |\r\n\r\n# \u4ece\u6e90\u4ee3\u7801\u6784\u5efa\r\n\r\n1. \u4e0b\u8f7d\u5b58\u50a8\u5e93 `git clone https://github.com/Puiching-Memory/pylibde265.git`\r\n2. \u4f9d\u636e\u672c\u5730\u6784\u5efa\u6e05\u5355\u914d\u7f6e\u73af\u5883\r\n3. \u5b89\u88c5\u7f16\u8bd1\u5668(Visual Studio \u751f\u6210\u5de5\u5177 2022 or Visual Studio 2022 C++\u5f00\u53d1\u5957\u4ef6)\r\n4. \u8fd0\u884c `python -m build`\r\n\r\n\u73af\u5883\u9700\u6c42-\u5f00\u53d1:\r\n\r\n```\r\npip install -r requirements_dev.txt\r\ngit clone https://github.com/strukturag/libde265.git\r\ncd libde265\r\nmkdir build\r\ncd build\r\ncmake ..\r\ncmake --build . --config Release\r\n```\r\n\r\n# \u5e38\u89c1\u95ee\u9898QA\r\n\r\n| \u95ee\u9898Q        | \u56de\u7b54A             | \u65e5\u671f       | \u7248\u672c  |\r\n| ------------ | ----------------- | ---------- | ----- |\r\n| \u652f\u6301\u4ec0\u4e48\u7cfb\u7edf | \u53ea\u652f\u6301windows\u7cfb\u7edf | 2025.01.31 | 0.0.2 |\r\n| \u786c\u4ef6\u8981\u6c42     | \u65e0                | 2025.01.31 | 0.0.2 |\r\n\r\n# \u5982\u4f55\u8d21\u732e\r\n\r\n* \u4e0d\u63a5\u53d7\u6765\u81eagitee/gitlab\u7b49\u955c\u50cf\u7ad9\u7684\u5408\u5e76\u8bf7\u6c42\r\n\r\n# \u8def\u7ebf\u56fe\r\n\r\n* [ ] \u5e27\u89e3\u7801\u6027\u80fd\u6539\u8fdb\r\n* [ ] \u652f\u6301GPU\u5904\u7406\r\n* [ ] \u6d41\u5f0f\u52a0\u8f7d\u6570\u636e(\u800c\u4e0d\u662f\u5728\u5f00\u59cb\u89e3\u7801\u524d\u5b8c\u5168\u8f7d\u5165)\r\n* [ ] \u53ef\u4fee\u6539\u7684\u8bbe\u7f6e\u9879\r\n\r\n# \u81f4\u8c22\r\n\r\n\u4f5c\u8005:\r\n\r\n* @\u68a6\u5f52\u4e91\u5e06\r\n\r\n\u53c2\u8003:\r\n\r\n* [libde265](https://github.com/strukturag/libde265)--C/C++\u4ed3\u5e93:\u4f5c\u8005[@strukturag](https://github.com/strukturag)\r\n* [pyde265](https://github.com/kloppjp/pyde265)--\u63d0\u4f9blinux\u7cfb\u7edf\u7684py\u7ed1\u5b9a:\u4f5c\u8005[@kloppjp](https://github.com/kloppjp)\r\n\r\n\u7edf\u8ba1\u6570\u636e\u6807\u7b7e:\r\n\r\n* https://dev.to/envoy_/150-badges-for-github-pnk\r\n* https://shields.io/\r\n\r\n\u6570\u636e\u5206\u6790:\r\n\r\n* https://pypistats.org/packages/pylibde265\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "python binding implementation of libde265, based on cython",
    "version": "0.0.2",
    "project_urls": {
        "Homepage": "https://github.com/Puiching-Memory/pylibde265",
        "Issues": "https://github.com/Puiching-Memory/pylibde265/issues"
    },
    "split_keywords": [
        "libde265",
        " h265",
        " vedio",
        " decode",
        " mp4"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "627c98b59746696a531091d92b5db2e93eb83f38d4100ec0f145d140bdb32589",
                "md5": "24b067bf6c4adfd30998246850af2fe4",
                "sha256": "438787a9cc6e85e97c741e97112ee6cfbd85fa5e108e47ed509c5913398c05ec"
            },
            "downloads": -1,
            "filename": "pylibde265-0.0.2-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "24b067bf6c4adfd30998246850af2fe4",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 391059,
            "upload_time": "2025-02-01T12:29:37",
            "upload_time_iso_8601": "2025-02-01T12:29:37.100985Z",
            "url": "https://files.pythonhosted.org/packages/62/7c/98b59746696a531091d92b5db2e93eb83f38d4100ec0f145d140bdb32589/pylibde265-0.0.2-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "108afbbc0493be8b91768c401c8e9d1aed82874ab4a11c28c308cbbce67fbdb4",
                "md5": "1ffdb4d01789dcacfcef8160d5868c74",
                "sha256": "9e4813b982da9fd2c3ecc6bc2fe0fb579fde0758e716ab300928b06c88437977"
            },
            "downloads": -1,
            "filename": "pylibde265-0.0.2-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "1ffdb4d01789dcacfcef8160d5868c74",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 390948,
            "upload_time": "2025-02-01T12:29:38",
            "upload_time_iso_8601": "2025-02-01T12:29:38.958000Z",
            "url": "https://files.pythonhosted.org/packages/10/8a/fbbc0493be8b91768c401c8e9d1aed82874ab4a11c28c308cbbce67fbdb4/pylibde265-0.0.2-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f33bfbe9ee93a826c819a4580da43afd21587e4b6111c2ccae733219d9dbb5f5",
                "md5": "07db2f569563f63a36c16a6a8342698a",
                "sha256": "96510b549d674485f615da140f283110111082f3e742d0a1e9b245bae93e4457"
            },
            "downloads": -1,
            "filename": "pylibde265-0.0.2-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "07db2f569563f63a36c16a6a8342698a",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 390898,
            "upload_time": "2025-02-01T12:29:44",
            "upload_time_iso_8601": "2025-02-01T12:29:44.758492Z",
            "url": "https://files.pythonhosted.org/packages/f3/3b/fbe9ee93a826c819a4580da43afd21587e4b6111c2ccae733219d9dbb5f5/pylibde265-0.0.2-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d1227298e7ab8c616ee5aadd5086c8515a48cde342b251038dc17a5b104da0df",
                "md5": "d9c3fb7146ed6276249e55ae9b3f8553",
                "sha256": "3153e4b546491545c0f8d6e141456a67ee6158f6b9ec682dfbfbf89de88bfe0b"
            },
            "downloads": -1,
            "filename": "pylibde265-0.0.2-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "d9c3fb7146ed6276249e55ae9b3f8553",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 391440,
            "upload_time": "2025-02-01T12:29:37",
            "upload_time_iso_8601": "2025-02-01T12:29:37.697367Z",
            "url": "https://files.pythonhosted.org/packages/d1/22/7298e7ab8c616ee5aadd5086c8515a48cde342b251038dc17a5b104da0df/pylibde265-0.0.2-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "eaae8ad4a5824b6726f1b6b93ebc4d50ef4aaad91c3abdb9923b565894bf1e0e",
                "md5": "707bcb0fc93f02822c0e7e1f499bfc88",
                "sha256": "5c57b1a92352bddd77c9803a530b811ccb289ddd0f0d4d5f72bb8d471b149f86"
            },
            "downloads": -1,
            "filename": "pylibde265-0.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "707bcb0fc93f02822c0e7e1f499bfc88",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 375085,
            "upload_time": "2025-02-01T12:29:39",
            "upload_time_iso_8601": "2025-02-01T12:29:39.185453Z",
            "url": "https://files.pythonhosted.org/packages/ea/ae/8ad4a5824b6726f1b6b93ebc4d50ef4aaad91c3abdb9923b565894bf1e0e/pylibde265-0.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-02-01 12:29:39",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Puiching-Memory",
    "github_project": "pylibde265",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pylibde265"
}
        
Elapsed time: 1.65653s