codec struct
This commit is contained in:
4
pve.py
4
pve.py
@ -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)
|
||||
|
||||
@ -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}"
|
||||
|
||||
@ -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)
|
||||
|
||||
Reference in New Issue
Block a user