Comment convertir 50 épisodes d'un DVD en 50 .mp4 avec HandBrake, facilement?

12

J'ai chargé un DVD avec 50 épisodes (choisi VIDEO_TS dans le programme), maintenant quand je l'ouvre dans HandBrake, il montre 50 "titres" là-dedans. je choisis le format de sortie 320x240 et commence la conversion. Ensuite, je clique sur le titre suivant, refaites la même chose, 50 fois.

Existe-t-il un moyen d'accélérer cela?, Car il ne se souvient pas de mes paramètres lorsque je clique sur le titre suivant. et j'ai essayé de faire un préréglage mais ça plante à chaque fois que je le choisis dans la liste des préréglages.

Débutant
la source

Réponses:

12

Vous pouvez écrire un script shell pour appeler HandBrakeCLI pour chaque titre.

Linux ( source ):

$ 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"
}
Grilse
la source
N'y a-t-il pas d'options gui pour cela? à propos de cet exemple de script Windows; que faire si $ title n'est pas un nombre? Je ne suis pas sûr de ce que fait ce code. soin d'expliquer?
Rookie
1
Option GUI: oui, il y a: Ajouter à la file d'attente -> Ajouter tout. Cependant, il est marqué comme (Expérimental) et cela n'a pas fonctionné lorsque je l'ai essayé.
Grilse
$ title n'est pas un nombre: $ title sera toujours un nombre. Voilà comment fonctionne le DVD. Explication: eh bien, c'est une boucle for qui compte de 1 à 4, et pour chaque compte, elle exécute HandBrakeCLI.exe avec certains paramètres. Consultez «HandBrakeCLI.exe --help» pour voir ce que signifient les paramètres.
Grilse
Je ne sais pas quoi d'autre vous voulez savoir. Demandez quelque chose de spécifique et je répondrai.
Grilse
Merci, maintenant je le comprends mieux. Donc, tout tourne autour des paramètres de ligne de commande, je peux le faire!
Débutant
3

D'après la réponse de Grilse:

Ce script n'utilise pas un nombre fixe de titres, mais laisse le frein à main les déterminer.

#!/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
ForestPhoenix
la source
Il convient de noter que si vous voulez que cette valeur de comptage soit correcte, vous devrez passer --min-duration 0 à HandBrakeCLI, sinon vous échouerez sur certains DVD. Par exemple, mon DVD de test a une piste 1 de 10 secondes qui sera ignorée dans la sortie finale.
Kaithar
2

Ajoutant mon petit grain de sel, voici le script Python que j'ai trouvé pour diviser en plusieurs chapitres. Le nombre est extrait automatiquement.

Notez que:

  1. Vous avez besoin de CLI Handbrake (actuellement disponible à cette adresse: https://handbrake.fr/downloads2.php )
  2. Vous devez avoir le dossier d'installation de Handbrake CLI dans votre PATH

Vous avez juste besoin d'appeler le script Python suivant avec l'emplacement du DVD comme argument du 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.
la source
0

Extraire les fichiers dans Linux Ubuntu via la CLI a très bien fonctionné. La ligne que j'ai utilisée ci-dessous répète la syntaxe donnée avec un peu d'amplification pour forcer le MPEG-4 et la qualité. Si des sous-titres sont nécessaires, je pense que les paramètres et les arguments de la ligne de commande (CLI) devraient être développés.

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
marque bower
la source
0

La ligne count=$(echo $rawout | grep -Eao "\\+ title [0-9]+:" | wc -l)de @ForestPhoenix ne fonctionne pas lorsque le premier chapitre est inférieur à 10 secondes.

Ceci est une amélioration du code:

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
la source
1
Bienvenue sur Superuser. Veuillez faire le tour sur superuser.com/Tour pour tirer le meilleur parti de ce site. En ce qui concerne cette réponse, je suggère que lorsque la question est en anglais, pouvez-vous répondre en anglais? Je vois qu'après cette première commande, vous avez écrit -> ne fonctionne pas lorsque les premiers éléments sont inférieurs à 10 secondes! Ensuite , vous avez montré ce qui est « meilleur »
SDsolar
@SDsolar: J'ai essayé de traduire car cette réponse était constructive. J'ai arrêté d'étudier l'allemand il y a 14 ans donc j'espère ne pas avoir mal traduit :)
Jean-Francois T.
-1

Vous pouvez ajouter les tâches à la file d'attente

Depuis le lien 2

Allez-y et changez le titre, le chapitre ou la source utilisée et assurez-vous de renommer le fichier de destination. Modifiez les paramètres que vous souhaitez. Cliquez ensuite sur le bouton "Ajouter à la file d'attente" dans la barre d'outils. Répétez ces étapes pour l'ensemble du lot de vidéos que vous souhaitez convertir.

Certains commentaires indiquent qu'ils avaient des problèmes avec l'écrasement du fichier précédent. Vous devrez donc être sûr de les nommer correctement. Assurez-vous que quelques travaux avant de le laisser fonctionner.

sealz
la source
l'ajout à la file d'attente ne supprime pas le problème de répétition: je dois cliquer pour sélectionner le titre suivant, changer la résolution, cliquer sur "ajouter la file d'attente", répéter. ce que je veux, c'est simplement convertir tous les titres à la fois avec exactement les mêmes paramètres. cela semble possible uniquement pour les chapitres
Rookie