delarte/src/delarte/muxing.py

34 lines
1019 B
Python
Raw Normal View History

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)
"""Provide tracks muxing utilities."""
import subprocess
def mux_target(target, _progress):
"""Multiplexes tracks into a single file."""
cmd = ["ffmpeg", "-hide_banner"]
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])
cmd.extend(["-c:v", "copy"])
cmd.extend(["-c:a", "copy"])
if target.subtitles_track:
cmd.extend(["-c:s", "copy"])
cmd.extend(["-bsf:a", "aac_adtstoasc"])
cmd.extend(["-metadata:s:a:0", f"language={target.audio_track.meta.language}"])
if target.subtitles_track:
cmd.extend(
["-metadata:s:s:0", f"language={target.subtitles_track.meta.language}"]
)
cmd.extend(["-disposition:s:0", "default"])
cmd.append(f"{target.file_name}.mkv")
subprocess.run(cmd)