MKVTrack¶
MKVTrack
classes are used to represent tracks within an MKV or to be used in an MKV. They can
represent a video, audio, or subtitle track.
Examples
Below are some basic examples of how the MKVTrack
objects can be used.
Create a new MKVTrack
from a track file. This example takes a standalone track file and uses it in an
MKVTrack
.
>>> from pymkv import MKVTrack
>>> track1 = MKVTrack("path/to/track.h264")
>>> track1.track_name = "Some Name"
>>> track1.language = "eng"
Create a new MKVTrack
from an MKV file. This example will take a specific track from an MKV and also
prevent any global tags from being included if the MKVTrack
is muxed into an MKVFile
.
>>> track2 = MKVTrack("path/to/track.aac")
>>> track2.language = "eng"
Create a new MKVTrack
from an MKV file. This example will take a specific track from an MKV and also
prevent any global tags from being included if the MKVTrack
is muxed into an MKVFile
.
>>> track3 = MKVTrack("path/to/MKV.mkv", track_id=1)
>>> track3.no_global_tags = True
Now all these tracks can be added to an MKVFile
object and muxed together.
>>> from pymkv import MKVFile
>>> file = MKVFile()
>>> file.add_track(track1)
>>> file.add_track(track2)
>>> file.add_track(track3)
>>> file.mux("path/to/output.mkv")
- class pymkv.MKVTrack(file_path: str, track_id: int | None = 0, track_name: str | None = None, language: str | None = None, language_ietf: str | None = None, default_track: bool | None = False, forced_track: bool | None = False, flag_commentary: bool | None = False, flag_hearing_impaired: bool | None = False, flag_visual_impaired: bool | None = False, flag_original: bool | None = False, mkvmerge_path: str | list | PathLike | None = 'mkvmerge', mkvextract_path: str | list | PathLike | None = 'mkvextract', sync: int | None = None)¶
A class that represents a track for an
MKVFile
object.MKVTrack
objects are video, audio, or subtitles. Tracks can be standalone files or a single track within an MKV file, both can be handled by pymkv. AnMKVTrack
object can be added to anMKVFile
and will be included when the MKV is muxed. :param file_path: Path to the track file. This can also be an MKV where the track_id is the track represented in the MKV. :type file_path: str :param track_id: The id of the track to be used from the file. track_id only needs to be set when importing a track froman MKV. In this case, you can specify track_id to indicate which track from the MKV should be used. If not set, it will import the first track. Track 0 is imported by default because mkvmerge sees standalone track files as having one track with track_id set as 0.
- Parameters:
track_name (str, optional) – The name that will be given to the track when muxed into a file.
language (str, optional) – The language of the track. It must be an ISO639-2 language code.
language_ietf (str, optional) – The language of the track. It must be a BCP47 language code. Has priority over ‘language’.
default_track (bool, optional) – Determines if the track should be the default track of its type when muxed into an MKV file.
forced_track (bool, optional) – Determines if the track should be a forced track when muxed into an MKV file.
mkvmerge_path (str, list, os.PathLike, optional) – The path where pymkv looks for the mkvmerge executable. pymkv relies on the mkvmerge executable to parse files. By default, it is assumed mkvmerge is in your shell’s $PATH variable. If it is not, you need to set mkvmerge_path to the executable location.
mkvextract_path (str, list, os.PathLike, optional) – The path where pymkv looks for the mkvextract executable. pymkv relies on the mkvextract executable to extract files. By default, it is assumed mkvextract is in your shell’s $PATH variable. If it is not, you need to set mkvextract_path to the executable location.
- mkvmerge_path¶
The path of the mkvmerge executable.
- Type:
list
- mkvextract_path¶
The path of the mkvextract executable.
- Type:
list
- track_name¶
The name that will be given to the track when muxed into a file.
- Type:
str
- default_track¶
Determines if the track should be the default track of its type when muxed into an MKV file.
- Type:
bool
- forced_track¶
Determines if the track should be a forced track when muxed into an MKV file.
- Type:
bool
- no_chapters¶
If chapters exist in the track file, don’t include them when this
MKVTrack
object is a track in anMKVFile
mux operation. This option has no effect on standalone track files, only tracks that are already part of an MKV file.- Type:
bool
- no_global_tags¶
If global tags exist in the track file, don’t include them when this
MKVTrack
object is a track in anMKVFile
mux operation. This option has no effect on standalone track files, only tracks that are already part of an MKV file.- Type:
bool
- no_track_tags¶
If track tags exist in the specified track within the track file, don’t include them when this
MKVTrack
object is a track in anMKVFile
mux operation. This option has no effect on standalone track files, only tracks that are already part of an MKV file.- Type:
bool
- no_attachments¶
If attachments exist in the track file, don’t include them when this
MKVTrack
object is a track in anMKVFile
mux operation. This option has no effect on standalone track files, only tracks that are already part of an MKV file.- Type:
bool
- extract(output_path: str | PathLike | None = None, silent: bool | None = False) str ¶
Extract the track as a file.
- Parameters:
output_path (str, os.PathLike, optional) – The path to be used as the output file in the mkvextract command.
silent (bool, optional) – By default the mkvmerge output will be shown unless silent is True.
- Returns:
The path of the extracted file.
- Return type:
str
- property file_id: int¶
The ID of the file the track belongs to.
The file ID represents which file the current track is associated with. This is particularly useful when handling multiple files.
- Raises:
IndexError – Raised if the passed in index is out of range of the file’s tracks.
- Type:
int
- property file_path: str¶
The path to the track or MKV file containing the desired track.
Setting this property will verify the passed in file is supported by mkvmerge and set the track_id to 0. It is recommended to recreate MKVTracks instead of setting their file path after instantiation.
- Raises:
ValueError – Raised if file_path is not a supported file type.
- Type:
str
- property language: str¶
The language of the track.
Setting this property will verify that the passed in language is an ISO-639 language code and use it as the language for the track.
- Raises:
ValueError – Raised if the passed in language is not an ISO 639-2 language code.
- Type:
str
- property language_ietf: str¶
The language of the track with BCP47 format. Setting this property will verify that the passed in language is a BCP47 language code and use it as the language for the track. :raises ValueError: Raised if the passed in language is not a BCP47 language code.
- Type:
str
- property pts: int¶
Returns the value of the pts property. The Presentation Timestamp (PTS) in multimedia files indicates the exact time when a frame or audio sample should be presented to the user, ensuring accurate synchronization between audio and video streams.
- Parameters:
self – The instance of the class.
- Returns:
The value of the pts property.
- property sync: int¶
track delay.
Setting this property allows you to wiggle the track negatively/positively.
- Type:
int
- property tags: str¶
The tags file to include with the track.
Setting this property will check that the file path passed in exists and set it as the tags file.
- Raises:
FileNotFoundError – Raised if the passed in file does not exist or is not a file.
TypeError – Raises if the passed in file is not of type str.
- Type:
str
- property track_codec: str¶
The codec of the track such as h264 or AAC.
- Type:
str
- property track_id: int¶
The ID of the track within the file.
Setting track_id will check that the ID passed in exists in the file. It will then look at the new track and set the codec and track type. Should be left at 0 unless extracting a specific track from an MKV.
- Raises:
IndexError – Raised if the passed in index is out of range of the file’s tracks.
- Type:
int
- property track_type: str¶
The type of track such as video or audio.
- Type:
str