File size: 2,729 Bytes
70b382b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import os
import subprocess

def obtener_lista_videos(folder_path):
    """

    Obtiene una lista de archivos MP4 en el directorio especificado, ordenados por nombre.

    

    :param folder_path: Ruta de la carpeta donde están los videos

    :return: Lista de rutas a los archivos de video

    """
    videos = [os.path.join(folder_path, filename) for filename in sorted(os.listdir(folder_path)) if filename.endswith(".mp4")]
    return videos

def crear_lista_txt(folder_path, lista_txt_path):
    """

    Crea un archivo de lista de texto con las rutas a los archivos MP4 en el directorio especificado.

    

    :param folder_path: Ruta de la carpeta donde están los videos

    :param lista_txt_path: Ruta del archivo de lista de texto

    """
    videos = obtener_lista_videos(folder_path)
    with open(lista_txt_path, 'w') as f:
        for video in videos:
            f.write(f"file '{video}'\n")

def unir_videos_con_lista(lista_txt_path, output_video):
    """

    Une los videos MP4 usando un archivo de lista de texto.

    

    :param lista_txt_path: Ruta del archivo de lista de texto

    :param output_video: Ruta del archivo de video de salida

    """
    # Verifica si ffmpeg está instalado
    try:
        subprocess.run(["ffmpeg", "-version"], check=True)
    except subprocess.CalledProcessError:
        print("ffmpeg no está instalado. Debes instalarlo.")
        return
    
    # Ejecuta el comando ffmpeg para unir los videos
    cmd = [
        "ffmpeg", "-y", "-f", "concat", "-safe", "0", 
        "-i", lista_txt_path, "-c", "copy", output_video
    ]
    subprocess.run(cmd, check=True)
    print(f"Video combinado guardado en {output_video}")

def eliminar_fragmentos(folder_path):
    """

    Elimina todos los archivos en el directorio especificado.

    

    :param folder_path: Ruta de la carpeta donde están los fragmentos

    """
    for archivo in os.listdir(folder_path):
        ruta_archivo = os.path.join(folder_path, archivo)
        if os.path.isfile(ruta_archivo):
            os.remove(ruta_archivo)
    print(f"Todos los fragmentos en {folder_path} han sido eliminados.")

# Define las rutas
folder_path = '/content/Vidu_Studio/video_output'  # Carpeta donde están los videos
lista_txt_path = '/tmp/video_list.txt'  # Archivo de lista de texto
video_salida = '/content/Vidu_Studio/video.mp4'  # Archivo de video combinado

# Crear el archivo de lista de texto
crear_lista_txt(folder_path, lista_txt_path)

# Unir los videos usando el archivo de lista de texto
unir_videos_con_lista(lista_txt_path, video_salida)

# Eliminar los fragmentos después de combinar los videos
eliminar_fragmentos(folder_path)