¿Cómo convertir 50 episodios de DVD a 50 .mp4 con HandBrake, fácilmente?

12

Cargué un DVD con 50 episodios (elegí VIDEO_TS del programa), ahora cuando lo abro en HandBrake, muestra 50 "títulos" allí. Elijo el formato de salida 320x240 y comienzo a convertir. Luego hago clic en el siguiente título, hago lo mismo otra vez, 50 veces.

¿Hay alguna forma de acelerar esto ?, porque no recuerda mi configuración cuando hago clic en el siguiente título. e intenté hacer un preset pero falla cada vez que lo elijo de la lista de presets.

Novato
fuente

Respuestas:

11

Puede escribir un script de shell para invocar HandBrakeCLI para cada título.

Linux ( fuente ):

$ for i in `seq 4`; do HandBrakeCLI --input /dev/dvd --title $i --preset Normal --output NameOfDisc_Title$i.mp4; done

Windows PowerShell:

for ($title=1; $title -le 4; $title++) {
    &"C:\program files\handbrake\HandBrakeCLI.exe" --input D:\ --title $title --preset Normal --output "$title.mp4"
}
Salmón joven
fuente
¿No hay opciones de interfaz gráfica de usuario para esto? sobre ese ejemplo de script de Windows; ¿Qué hago si el $ title no es un número? No estoy seguro de lo que hace ese código. ¿le importaria explicar?
Novato
1
Opción de GUI: sí, hay: Agregar a la cola -> Agregar todo. Sin embargo, está marcado como (Experimental) y no funcionó cuando lo probé.
Grilse
$ title no es un número: $ title siempre será un número. Así es como funcionan los DVD. Explicación: bueno, es un bucle for que cuenta del 1 al 4, y para cada recuento, ejecuta HandBrakeCLI.exe con algunos parámetros. Consulte "HandBrakeCLI.exe --help" para ver qué significan los parámetros.
Grilse
No estoy seguro de qué más quieres saber. Pregunta algo específico y te responderé.
Grilse
Gracias, ahora lo entiendo mejor. Así que se trata solo de parámetros de línea de comandos, ¡puedo hacer eso!
Novato
3

Basado en la respuesta de Grilse:

Este script no usa un número fijo de títulos, pero permite que el freno de mano los determine.

#!/bin/bash
rawout=$(HandBrakeCLI -i /dev/dvd -t 0 2>&1 >/dev/null)
#read handbrake's stderr into variable

count=$(echo $rawout | grep -Eao "\\+ title [0-9]+:" | wc -l)
#parse the variable using grep to get the count

for i in $(seq $count)
do
    HandBrakeCLI --input /dev/dvd --title $i --preset Normal --output $i.mp4
done
Bosque Fénix
fuente
Vale la pena señalar que si desea que el valor de recuento sea correcto, deberá pasar --min-length 0 a HandBrakeCLI, de lo contrario, le faltarán algunos DVD. Por ejemplo, mi DVD de prueba tiene una pista 1 de 10 segundos que se ignorará en la salida final.
Kaithar
2

Agregando mi pequeño grano de sal, este es el script de Python que se me ocurrió dividir en varios capítulos. El número se extrae automáticamente.

Tenga en cuenta que:

  1. Necesita la CLI de Handbrake (actualmente disponible en esta dirección: https://handbrake.fr/downloads2.php )
  2. Debe tener la carpeta de instalación de Handbrake CLI en su RUTA

Solo necesita llamar al siguiente script de Python con la ubicación del DVD como argumento del script.

#!python

import os
import subprocess
import re
import sys

# Ugly but simple way to get first argument = folder with DVD
# We will get DVD name by removing all / and \
dvd = sys.argv[1]
dvd_name = re.sub(r'.*[/\\]', r'', dvd).rstrip('/').rstrip('\\')

s = subprocess.Popen(
        f'HandBrakeCLI -i "{dvd}" -t 0', stdout=subprocess.PIPE, stderr=subprocess.STDOUT
    )
count = 0
for line in s.stdout:
    if re.search(rb"\+ title [0-9]+:", line):
        count += 1
print(f'==Extracting {count} chapters from "{dvd}"==')


for i in range(1,count+1):
    output = f"{dvd_name}_{i}.mp4"
    cmd = f'HandBrakeCLI --input {dvd} --title {i} --preset Normal --output "{output}"'
    log = f"encoding_{output}.log"
    with open(log, 'wb') as f:
        s = subprocess.Popen(cmd, stdout=f, stderr=subprocess.STDOUT)
        s.communicate()
    if not os.path.isfile(output):
        print(f'ERROR during extraction of "{output}"!')
    else:
        print(f'Successfully extracted Chapter #{i} to "{output}"')
Jean-Francois T.
fuente
0

Extraer los archivos en Linux Ubuntu a través de la CLI funcionó muy bien. La línea que utilicé a continuación repite la sintaxis dada con un poco de amplificación para forzar MPEG-4 y calidad. Si se necesitan subtítulos, creo que los parámetros y argumentos de la línea de comando (CLI) tendrían que expandirse.

patty@patty:~$ for i in `seq 4`; do HandBrakeCLI -i /media/patty/DVDTITLE -t $i -o DVDTITLE_Title$i.mp4 -e x264 -q 18; done
marca bower
fuente
0

La línea count=$(echo $rawout | grep -Eao "\\+ title [0-9]+:" | wc -l)de @ForestPhoenix no funciona cuando el primer capítulo es menor a 10 segundos.

Esta es una mejora del código:

rohausgabe=$(HandBrakeCLI -i "$iso" -t 0 2>&1 >/dev/null)
anzahl=$(echo $rohausgabe | grep -Eao "scan: DVD has [0-9]" | awk -F " " '{print $4}')
kpfroemel
fuente
1
Bienvenido a Superusuario. Realice el recorrido en superuser.com/Tour para aprovechar al máximo este sitio. En cuanto a esta respuesta, sugiero que cuando la pregunta esté en inglés, ¿puede responder en inglés? ¡Veo que después de ese primer comando que escribió -> no funciona cuando los primeros elementos tienen menos de 10 segundos! Luego mostraste lo que es "Mejor"
SDsolar
@SDsolar: Traté de traducir ya que esta respuesta fue constructiva. Dejé de estudiar alemán hace 14 años, así que espero no haber traducido mal :)
Jean-Francois T.
-1

Puedes agregar las tareas a la cola

Desde el enlace 2

Simplemente continúe y cambie el título, el capítulo o la fuente en uso, y asegúrese de cambiar el nombre del archivo de destino. Ajusta cualquier configuración que desees. Luego haga clic en el botón "Agregar a la cola" en la barra de herramientas. Repita estos pasos para todo el lote de videos que desea convertir.

Algunos de los comentarios dicen que tenían problemas para sobrescribir el archivo anterior. Por lo tanto, tendrá que asegurarse de nombrarlos correctamente. Asegúrese de trabajar un poco antes de dejarlo en funcionamiento.

Sealz
fuente
agregar a la cola no elimina el problema de la repetición: necesito hacer clic para seleccionar el próximo título, cambiar la resolución, hacer clic en "agregar cola", repetir. lo que quiero es simplemente convertir todos los títulos a la vez con exactamente la misma configuración. esto parece ser posible solo para capítulos
Novato