codec struct

This commit is contained in:
2025-10-04 14:52:27 +02:00
parent e0124c0ff3
commit 04448df101
3 changed files with 27 additions and 3 deletions

4
pve.py
View File

@ -22,8 +22,8 @@ from pyav.decoder import Decoder
demuxer = Demuxer('test.mp4')
print(f"nb_streams = {demuxer.nb_streams}")
print(f"video codec = {demuxer.video_stream.codec.name}")
print(f"audio codec = {demuxer.audio_stream.codec.name}")
print(f"video codec = {demuxer.video_stream.codec.description()}")
print(f"audio codec = {demuxer.audio_stream.codec.description()}")
video_decoder = Decoder(demuxer.video_stream)
audio_decoder = Decoder(demuxer.audio_stream)

View File

@ -27,3 +27,16 @@ class Codec:
@property
def name(self):
return self._ref.contents.name.decode("utf-8")
@property
def long_name(self):
return self._ref.contents.long_name.decode("utf-8")
@property
def wrapper_name(self):
if self._ref.contents.wrapper_name is not None:
return self._ref.contents.wrapper_name.decode("utf-8")
return "<None>"
def description(self):
return f"{self.name} / {self.long_name} / {self.wrapper_name}"

View File

@ -126,7 +126,18 @@ AVPacket_pp = ctypes.POINTER(AVPacket_p)
class AVCodec(ctypes.Structure):
_fields_ = [
("name", ctypes.c_char_p),
("long_name", ctypes.c_char_p)]
("long_name", ctypes.c_char_p),
("type", ctypes.c_int), # AVMediaType
("id", ctypes.c_int), # AVCodecID
("capabilities", ctypes.c_int), # AV_CODEC_CAP_*
("max_lowres", ctypes.c_uint8),
("deprecated_supported_framerates", ctypes.c_void_p),
("deprecated_pix_fmts", ctypes.c_void_p),
("deprecated_supported_samplerates", ctypes.c_void_p),
("deprecated_sample_fmts", ctypes.c_void_p),
("priv_class", ctypes.c_void_p),
("profiles", ctypes.c_void_p), # AVProfile
("wrapper_name", ctypes.c_char_p)]
# ...
AVCodec_p = ctypes.POINTER(AVCodec)