2022-12-20 08:48:57 +00:00
|
|
|
# License: GNU AGPL v3: http://www.gnu.org/licenses/
|
|
|
|
# This file is part of `delarte` (https://git.afpy.org/fcode/delarte.git)
|
2022-12-13 06:29:59 +00:00
|
|
|
|
2023-01-08 19:40:49 +00:00
|
|
|
"""Provide tracks muxing utilities."""
|
2022-12-13 06:29:59 +00:00
|
|
|
|
|
|
|
import subprocess
|
|
|
|
|
|
|
|
|
2023-01-09 18:30:46 +00:00
|
|
|
def mux_target(target, _progress):
|
|
|
|
"""Multiplexes tracks into a single file."""
|
2022-12-13 06:29:59 +00:00
|
|
|
cmd = ["ffmpeg", "-hide_banner"]
|
2023-01-09 18:30:46 +00:00
|
|
|
cmd.extend(["-i", target.video_track.url])
|
|
|
|
cmd.extend(["-i", target.audio_track.url])
|
|
|
|
if target.subtitles_track:
|
|
|
|
cmd.extend(["-i", target.subtitles_track.url])
|
2022-12-13 06:29:59 +00:00
|
|
|
|
|
|
|
cmd.extend(["-c:v", "copy"])
|
|
|
|
cmd.extend(["-c:a", "copy"])
|
2023-01-09 18:30:46 +00:00
|
|
|
if target.subtitles_track:
|
2022-12-13 06:29:59 +00:00
|
|
|
cmd.extend(["-c:s", "copy"])
|
|
|
|
|
|
|
|
cmd.extend(["-bsf:a", "aac_adtstoasc"])
|
2023-01-09 18:30:46 +00:00
|
|
|
cmd.extend(["-metadata:s:a:0", f"language={target.audio_track.meta.language}"])
|
2022-12-13 06:29:59 +00:00
|
|
|
|
2023-01-09 18:30:46 +00:00
|
|
|
if target.subtitles_track:
|
|
|
|
cmd.extend(
|
|
|
|
["-metadata:s:s:0", f"language={target.subtitles_track.meta.language}"]
|
|
|
|
)
|
2022-12-13 06:29:59 +00:00
|
|
|
cmd.extend(["-disposition:s:0", "default"])
|
|
|
|
|
2023-01-09 18:30:46 +00:00
|
|
|
cmd.append(f"{target.file_name}.mkv")
|
2022-12-13 06:29:59 +00:00
|
|
|
|
|
|
|
subprocess.run(cmd)
|