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')
|
demuxer = Demuxer('test.mp4')
|
||||||
|
|
||||||
print(f"nb_streams = {demuxer.nb_streams}")
|
print(f"nb_streams = {demuxer.nb_streams}")
|
||||||
print(f"video codec = {demuxer.video_stream.codec.name}")
|
print(f"video codec = {demuxer.video_stream.codec.description()}")
|
||||||
print(f"audio codec = {demuxer.audio_stream.codec.name}")
|
print(f"audio codec = {demuxer.audio_stream.codec.description()}")
|
||||||
|
|
||||||
video_decoder = Decoder(demuxer.video_stream)
|
video_decoder = Decoder(demuxer.video_stream)
|
||||||
audio_decoder = Decoder(demuxer.audio_stream)
|
audio_decoder = Decoder(demuxer.audio_stream)
|
||||||
|
|||||||
@ -27,3 +27,16 @@ class Codec:
|
|||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
return self._ref.contents.name.decode("utf-8")
|
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):
|
class AVCodec(ctypes.Structure):
|
||||||
_fields_ = [
|
_fields_ = [
|
||||||
("name", ctypes.c_char_p),
|
("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)
|
AVCodec_p = ctypes.POINTER(AVCodec)
|
||||||
|
|||||||
Reference in New Issue
Block a user