Skip to main content

Raw audio/video player for Python

Project description

raw-player

PyPI image License Actions status

About Shiguredo's open source software

We will not respond to PRs or issues that have not been discussed on Discord. Also, Discord is only available in Japanese.

Please read https://github.com/shiguredo/oss/blob/master/README.en.md before use.

時雨堂のオープンソースソフトウェアについて

利用前に https://github.com/shiguredo/oss をお読みください。

raw-player について

[!WARNING] raw-player は破壊的変更を伴う可能性のある開発段階のソフトウェアです。 そのため、 API は予告なく変更される可能性があります。

numpy.ndarray 形式で渡された生の映像・音声データを再生する Python ライブラリです。

PCM / I420 / NV12 / YUY2 / RGBA / BGRA データを PTS (Presentation Timestamp) に基づいて音声と映像を同期しながら再生します。

https://github.com/user-attachments/assets/cdbb5b95-dbb7-4088-a842-0c66830e2a25

特徴

  • 生の音声/映像入力データをそのまま再生できる
  • 入力データに numpy.ndarray を採用
  • 音声フォーマットは PCM (int16 / float32) に対応
  • 映像フォーマットは I420 (YUV420P) / NV12 / YUY2 / RGBA / BGRA に対応
  • PTS ベース音声をマスタークロックとした映像同期機能
  • GPU レンダリング
    • macOS: Metal
    • Windows: Vulkan / Direct3D 12
    • Linux: Vulkan

対応プラットフォーム

  • macOS 26 arm64
  • macOS 15 arm64
  • Ubuntu 24.04 x86_64
  • Ubuntu 24.04 arm64
  • Windows 11 x86_64

対応 Python

  • 3.14
  • 3.13
  • 3.12

インストール

uv add raw-player

使い方

音声再生

import numpy as np
import raw_player as rp

player = rp.AudioPlayer()

# 440Hz のサイン波を生成
sample_rate = 48000
duration = 2.0
t = np.linspace(0, duration, int(sample_rate * duration), dtype=np.float32)
mono = 0.3 * np.sin(2 * np.pi * 440.0 * t)

# ステレオに変換(shape: (frames, channels))
stereo = np.column_stack([mono, mono])

# PTS とサンプルレートを指定してキューに追加
player.enqueue_audio(stereo, pts_us=0, sample_rate=sample_rate)
player.play()

I420 (YUV420P) 再生

import numpy as np
import raw_player as rp

# ウィンドウサイズとタイトルを指定して作成
player = rp.VideoPlayer(width=1920, height=1080, title="I420 Player")

# Y, U, V プレーンを用意
# Y: (H, W), U: (H/2, W/2), V: (H/2, W/2)
y_plane = np.zeros((1080, 1920), dtype=np.uint8)
u_plane = np.zeros((540, 960), dtype=np.uint8)
v_plane = np.zeros((540, 960), dtype=np.uint8)

# PTS(マイクロ秒)を指定してキューに追加
player.enqueue_video_i420(y_plane, u_plane, v_plane, pts_us=0)
player.play()

while player.is_open:
    # イベント処理とフレームレンダリング
    if not player.poll_events():
        break

player.close()

NV12 再生

import numpy as np
import raw_player as rp

player = rp.VideoPlayer(width=1920, height=1080, title="NV12 Player")

# Y プレーンと UV インターリーブプレーンを用意
# Y: (H, W), UV: (H/2, W)
y_plane = np.zeros((1080, 1920), dtype=np.uint8)
uv_plane = np.zeros((540, 1920), dtype=np.uint8)

# PTS(マイクロ秒)を指定してキューに追加
player.enqueue_video_nv12(y_plane, uv_plane, pts_us=0)
player.play()

while player.is_open:
    if not player.poll_events():
        break

player.close()

YUY2 再生

import numpy as np
import raw_player as rp

player = rp.VideoPlayer(width=1920, height=1080, title="YUY2 Player")

# YUY2: パックドフォーマット (H, W*2)
# Y0 U0 Y1 V0 Y2 U1 Y3 V1 ... の形式(2 ピクセルで 4 バイト)
yuy2_data = np.zeros((1080, 1920 * 2), dtype=np.uint8)

# PTS(マイクロ秒)を指定してキューに追加
player.enqueue_video_yuy2(yuy2_data, pts_us=0)
player.play()

while player.is_open:
    if not player.poll_events():
        break

player.close()

RGBA 再生

import numpy as np
import raw_player as rp

player = rp.VideoPlayer(width=1920, height=1080, title="RGBA Player")

# RGBA: (H, W, 4)
rgba_data = np.zeros((1080, 1920, 4), dtype=np.uint8)

# PTS(マイクロ秒)を指定してキューに追加
player.enqueue_video_rgba(rgba_data, pts_us=0)
player.play()

while player.is_open:
    if not player.poll_events():
        break

player.close()

BGRA 再生

import numpy as np
import raw_player as rp

player = rp.VideoPlayer(width=1920, height=1080, title="BGRA Player")

# BGRA: (H, W, 4)
bgra_data = np.zeros((1080, 1920, 4), dtype=np.uint8)

# PTS(マイクロ秒)を指定してキューに追加
player.enqueue_video_bgra(bgra_data, pts_us=0)
player.play()

while player.is_open:
    if not player.poll_events():
        break

player.close()

PTS ベースの AV 同期再生

import numpy as np
import raw_player as rp

# 映像と音声を統合したプレイヤー
player = rp.VideoPlayer(width=1920, height=1080, title="AV Sync Player")

# 映像フレームをキューに追加(I420 形式)
player.enqueue_video_i420(y_plane, u_plane, v_plane, pts_us=0)

# 音声データをキューに追加
# pcm: int16 または float32、shape: (frames,) または (frames, channels)
player.enqueue_audio(audio_data, pts_us=0, sample_rate=48000)

player.play()

while player.is_open:
    if not player.poll_events():
        break
    # poll_events() が音声 PTS に基づいて適切なフレームを自動描画

player.close()

API リファレンス

AudioPlayer

独立した音声再生用クラス。

player = AudioPlayer()
メソッド 説明
enqueue_audio(pcm, pts_us, sample_rate) 音声データをキューに追加
play() 再生開始/再開
pause() 一時停止
stop() 停止してキューをクリア
stats() 統計情報を取得
プロパティ 説明
is_playing 再生中かどうか
volume 音量(0.0〜1.0)

enqueue_audio の引数

  • pcm: 音声データ(int16 または float32 の numpy 配列)
    • 1D: (frames,) モノラル
    • 2D: (frames, channels) マルチチャンネル
  • pts_us: PTS(マイクロ秒)
  • sample_rate: サンプルレート(Hz)

VideoPlayer

映像再生用クラス。音声も統合可能。

player = VideoPlayer(width=960, height=540, title="Raw Player")
メソッド 説明
enqueue_video_i420(y, u, v, pts_us) I420 フレームをキューに追加
enqueue_video_nv12(y, uv, pts_us) NV12 フレームをキューに追加
enqueue_video_yuy2(data, pts_us) YUY2 フレームをキューに追加
enqueue_video_rgba(data, pts_us) RGBA フレームをキューに追加
enqueue_video_bgra(data, pts_us) BGRA フレームをキューに追加
enqueue_audio(pcm, pts_us, sample_rate) 音声データをキューに追加
play() 再生開始
pause() 一時停止
stop() 停止してキューをクリア
close() リソースを解放
poll_events() イベント処理とフレーム描画(閉じられたら False)
set_key_callback(callback) キーイベントコールバックを設定
stats() 統計情報を取得
プロパティ 説明
is_open ウィンドウが開いているか
is_playing 再生中か
width ウィンドウ幅
height ウィンドウ高さ
title ウィンドウタイトル(読み書き可)
renderer_name GPU レンダラー名(metal, vulkan など)
volume 音量(0.0〜1.0)

enqueue_video_i420 の引数

  • y: Y プレーン(uint8、shape: (H, W))
  • u: U プレーン(uint8、shape: (H/2, W/2))
  • v: V プレーン(uint8、shape: (H/2, W/2))
  • pts_us: PTS(マイクロ秒)

enqueue_video_nv12 の引数

  • y: Y プレーン(uint8、shape: (H, W))
  • uv: UV インターリーブプレーン(uint8、shape: (H/2, W))
  • pts_us: PTS(マイクロ秒)

enqueue_video_yuy2 の引数

  • data: YUY2 パックドデータ(uint8、shape: (H, W*2))
    • Y0 U0 Y1 V0 Y2 U1 Y3 V1 ... の形式(2 ピクセルで 4 バイト)
  • pts_us: PTS(マイクロ秒)

enqueue_video_rgba の引数

  • data: RGBA データ(uint8、shape: (H, W, 4))
  • pts_us: PTS(マイクロ秒)

enqueue_video_bgra の引数

  • data: BGRA データ(uint8、shape: (H, W, 4))
  • pts_us: PTS(マイクロ秒)

stats() の戻り値

{
  "video_queue_size": int,      # 映像キュー内のフレーム数
  "audio_queue_ms": float,      # 音声キューの長さ(ミリ秒)
  "dropped_frames": int,        # ドロップしたフレーム数
  "repeated_frames": int,       # 繰り返したフレーム数
  "video_pts_us": int,          # 最後に描画した映像の PTS
  "audio_pts_us": int,          # 現在の音声再生位置
  "sync_diff_us": int,          # 音声と映像の差
  "current_video_width": int,   # 現在の映像幅
  "current_video_height": int,  # 現在の映像高さ
  "current_fps": float,         # 現在の FPS
  "total_frames_enqueued": int, # エンキューしたフレーム総数
  "total_frames_rendered": int, # レンダリングしたフレーム総数
  "video_buffer_ms": float,     # 映像バッファ時間(ミリ秒)
  "elapsed_time_ms": float,     # 経過時間(ミリ秒)
  "video_bitrate_kbps": float,  # 映像ビットレート(kbps)
}

モジュール関数

システム情報を取得するためのモジュールレベル関数。

関数 説明
get_version() SDL のバージョン文字列を取得
get_audio_driver() 現在の音声ドライバー名を取得
get_video_driver() 現在の映像ドライバー名を取得
get_gpu_driver() プライマリ GPU ドライバー名を取得(metal, vulkan, d3d12 など)
get_num_gpu_drivers() 利用可能な GPU ドライバーの数を取得
get_all_gpu_drivers() 利用可能な全ての GPU ドライバー名をリストで取得

使用例

from raw_player import (
    get_version,
    get_audio_driver,
    get_video_driver,
    get_gpu_driver,
    get_all_gpu_drivers,
)

# SDL バージョンを表示
print(f"SDL Version: {get_version()}")

# ドライバー情報を表示
print(f"Audio Driver: {get_audio_driver()}")
print(f"Video Driver: {get_video_driver()}")
print(f"GPU Driver: {get_gpu_driver()}")

# 利用可能な全ての GPU ドライバーを表示
print(f"Available GPU Drivers: {get_all_gpu_drivers()}")

Simple DirectMedia Layer ライセンス

Zlib license

https://github.com/libsdl-org/SDL/blob/main/LICENSE.txt

Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
  
This software is provided 'as-is', without any express or implied
warranty.  In no event will the authors be held liable for any damages
arising from the use of this software.

Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
  
1. The origin of this software must not be misrepresented; you must not
   claim that you wrote the original software. If you use this software
   in a product, an acknowledgment in the product documentation would be
   appreciated but is not required. 
2. Altered source versions must be plainly marked as such, and must not be
   misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.

raw-player ライセンス

Apache License 2.0

Copyright 2025-2025, Shiguredo Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

raw_player-2025.1.0.dev1-cp314-cp314-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.14Windows x86-64

raw_player-2025.1.0.dev1-cp314-cp314-manylinux_2_34_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

raw_player-2025.1.0.dev1-cp314-cp314-manylinux_2_34_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ ARM64

raw_player-2025.1.0.dev1-cp314-cp314-macosx_15_0_arm64.whl (931.3 kB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

raw_player-2025.1.0.dev1-cp313-cp313-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.13Windows x86-64

raw_player-2025.1.0.dev1-cp313-cp313-manylinux_2_34_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

raw_player-2025.1.0.dev1-cp313-cp313-manylinux_2_34_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ ARM64

raw_player-2025.1.0.dev1-cp313-cp313-macosx_15_0_arm64.whl (931.3 kB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

raw_player-2025.1.0.dev1-cp312-cp312-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.12Windows x86-64

raw_player-2025.1.0.dev1-cp312-cp312-manylinux_2_34_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

raw_player-2025.1.0.dev1-cp312-cp312-manylinux_2_34_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ ARM64

raw_player-2025.1.0.dev1-cp312-cp312-macosx_15_0_arm64.whl (931.3 kB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

File details

Details for the file raw_player-2025.1.0.dev1-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for raw_player-2025.1.0.dev1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 b955cf5fb42c0602476a921fb1224a0baf87e8ff5a405750b540abdd17e7a9b3
MD5 76d0bed6767fb3bad6bc626a7b17b761
BLAKE2b-256 48ab460a86c19d3c6ed409ad88fbcc0f0aa06a13bf8cd8f2deaf44818bbd2955

See more details on using hashes here.

Provenance

The following attestation bundles were made for raw_player-2025.1.0.dev1-cp314-cp314-win_amd64.whl:

Publisher: wheel.yml on shiguredo/raw-player

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file raw_player-2025.1.0.dev1-cp314-cp314-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for raw_player-2025.1.0.dev1-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 55823cb726c87be39bde61e2fe611b95cf71aa9d79c6b98fdddbb274ff66fbad
MD5 e270aa9d6339af07057423fdda40289f
BLAKE2b-256 237baf0fc017d4bd4438cee18009a39e04902cd470344f5c5b657c9f8cdb9d44

See more details on using hashes here.

Provenance

The following attestation bundles were made for raw_player-2025.1.0.dev1-cp314-cp314-manylinux_2_34_x86_64.whl:

Publisher: wheel.yml on shiguredo/raw-player

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file raw_player-2025.1.0.dev1-cp314-cp314-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for raw_player-2025.1.0.dev1-cp314-cp314-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 f43a30e7236f422dc5a3ddb3c0ceb77b97c36b634bb3094ad949d3512096de04
MD5 7b3629cf94d51ebc71511018095f02ca
BLAKE2b-256 cdc5d8ea575183ab4d88a8cc6c32058d9bd820578a6b104700b97c8ba36e191b

See more details on using hashes here.

Provenance

The following attestation bundles were made for raw_player-2025.1.0.dev1-cp314-cp314-manylinux_2_34_aarch64.whl:

Publisher: wheel.yml on shiguredo/raw-player

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file raw_player-2025.1.0.dev1-cp314-cp314-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for raw_player-2025.1.0.dev1-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 95228b3695052c90872b9a8915c72e708d4584d2c4e2104cb967f05b6d5d5cef
MD5 087a2ff43a253d756924f98f70ab64c5
BLAKE2b-256 bff192e06aa9fc1c718df4d21633dd97b8c9f33916d1cdd4188b5b2a457b28e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for raw_player-2025.1.0.dev1-cp314-cp314-macosx_15_0_arm64.whl:

Publisher: wheel.yml on shiguredo/raw-player

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file raw_player-2025.1.0.dev1-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for raw_player-2025.1.0.dev1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 be0937efc377e5a2559b87d0a85fad96164e7b55b9e0ed58a6d0d4aee900eac0
MD5 b782a2ebd7338d2f84f1727c8d1fc717
BLAKE2b-256 44e26978703d0b60f452928a39ed246d1eb5cb87d67ed41272a0977228440a24

See more details on using hashes here.

Provenance

The following attestation bundles were made for raw_player-2025.1.0.dev1-cp313-cp313-win_amd64.whl:

Publisher: wheel.yml on shiguredo/raw-player

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file raw_player-2025.1.0.dev1-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for raw_player-2025.1.0.dev1-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 4965d7cc78b298d0462faf2a73e0dfdb5d78a76ca5cd85d38ac097b2458be899
MD5 5bfcab979bbcdc40886624fa529e9548
BLAKE2b-256 f9ddaf7157f5abe9c212612eb291fdc1000f1f025efd3d4a2a99bfbdb6192bb0

See more details on using hashes here.

Provenance

The following attestation bundles were made for raw_player-2025.1.0.dev1-cp313-cp313-manylinux_2_34_x86_64.whl:

Publisher: wheel.yml on shiguredo/raw-player

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file raw_player-2025.1.0.dev1-cp313-cp313-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for raw_player-2025.1.0.dev1-cp313-cp313-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 1ae0869ab9e0862a3ce10ebf190365fc1e977b8e885ba7ce4382a6a8eaf0e15a
MD5 2f0e70fcdb089b522991f8a522f9a746
BLAKE2b-256 7106829916fd6822c9ea895f5b77b96832eb282f71c6fee1c22f5a32b8c12787

See more details on using hashes here.

Provenance

The following attestation bundles were made for raw_player-2025.1.0.dev1-cp313-cp313-manylinux_2_34_aarch64.whl:

Publisher: wheel.yml on shiguredo/raw-player

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file raw_player-2025.1.0.dev1-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for raw_player-2025.1.0.dev1-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 3a32dc16e030c8e57f11130dd4ffb8c3be7ed21d8ccc38392f4f697e94189ed3
MD5 4f9fb4340bbfae0adb5c0019bb5ff8f5
BLAKE2b-256 fd75875d25a208874b75177c2d05e6c044dc385e09faf4b1738091597a147c17

See more details on using hashes here.

Provenance

The following attestation bundles were made for raw_player-2025.1.0.dev1-cp313-cp313-macosx_15_0_arm64.whl:

Publisher: wheel.yml on shiguredo/raw-player

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file raw_player-2025.1.0.dev1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for raw_player-2025.1.0.dev1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e2a9b72c1c69df0ed07f4118690244ff85714bae89890d232596d572861eb995
MD5 78e9680e37b1e99bc3f51bf1d73f6eff
BLAKE2b-256 8cbce836637e781d4f326bec85692f79034d76a18a43c6122f2e473b83635649

See more details on using hashes here.

Provenance

The following attestation bundles were made for raw_player-2025.1.0.dev1-cp312-cp312-win_amd64.whl:

Publisher: wheel.yml on shiguredo/raw-player

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file raw_player-2025.1.0.dev1-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for raw_player-2025.1.0.dev1-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 6b1a54ca4e393fc90715efc6d5c9d361a845129c19551cd4f0f15138cc2d7ab1
MD5 6e12200cfea962548202e03f5436af13
BLAKE2b-256 1ba609b5f7b8c964bdac34aef72d0a9afb3fe1fc65621eb30fc1fe47c453c27a

See more details on using hashes here.

Provenance

The following attestation bundles were made for raw_player-2025.1.0.dev1-cp312-cp312-manylinux_2_34_x86_64.whl:

Publisher: wheel.yml on shiguredo/raw-player

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file raw_player-2025.1.0.dev1-cp312-cp312-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for raw_player-2025.1.0.dev1-cp312-cp312-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 bb8e5ce1b1691c84d42c5f6559b269054925276376b010b1ac144743ca0ef616
MD5 086e1ef626d47d5eaa01c02f12bd9648
BLAKE2b-256 5ad41eef21742e727b24c29755e6bd4a7b69c4937f3ad765f90c37e5e643b05d

See more details on using hashes here.

Provenance

The following attestation bundles were made for raw_player-2025.1.0.dev1-cp312-cp312-manylinux_2_34_aarch64.whl:

Publisher: wheel.yml on shiguredo/raw-player

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file raw_player-2025.1.0.dev1-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for raw_player-2025.1.0.dev1-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 3934623d7b18eb9c1f154b88497c50a82da167a06b36eaddc7081f8c95c9abc9
MD5 c5a33392d3ed222c40c2782adffe13a3
BLAKE2b-256 07976b4e6238d6c6131a04ef565571a7926126e49fb2ca2e5bc58a50715daa23

See more details on using hashes here.

Provenance

The following attestation bundles were made for raw_player-2025.1.0.dev1-cp312-cp312-macosx_15_0_arm64.whl:

Publisher: wheel.yml on shiguredo/raw-player

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page