forked from fcode/delarte
38 lines
1.0 KiB
Python
38 lines
1.0 KiB
Python
# Licence: GNU AGPL v3: http://www.gnu.org/licenses/
|
|
# This file is part of [`delarte`](https://git.afpy.org/fcode/delarte.git)
|
|
|
|
"""Provide media muxing utilities."""
|
|
|
|
import subprocess
|
|
|
|
|
|
def mux(inputs, file_base_name, progress):
|
|
"""Build FFMPEG args."""
|
|
video_input, audio_track, subtitles_track = inputs
|
|
|
|
audio_lang, audio_input = audio_track
|
|
if subtitles_track:
|
|
subtitles_lang, subtitles_input = subtitles_track
|
|
|
|
cmd = ["ffmpeg", "-hide_banner"]
|
|
cmd.extend(["-i", video_input])
|
|
cmd.extend(["-i", audio_input])
|
|
if subtitles_track:
|
|
cmd.extend(["-i", subtitles_input])
|
|
|
|
cmd.extend(["-c:v", "copy"])
|
|
cmd.extend(["-c:a", "copy"])
|
|
if subtitles_track:
|
|
cmd.extend(["-c:s", "copy"])
|
|
|
|
cmd.extend(["-bsf:a", "aac_adtstoasc"])
|
|
cmd.extend(["-metadata:s:a:0", f"language={audio_lang}"])
|
|
|
|
if subtitles_track:
|
|
cmd.extend(["-metadata:s:s:0", f"language={subtitles_lang}"])
|
|
cmd.extend(["-disposition:s:0", "default"])
|
|
|
|
cmd.append(f"{file_base_name}.mkv")
|
|
|
|
subprocess.run(cmd)
|