Wie kann man mit HandBrake einfach 50 Folgen von DVD in 50 .mp4 konvertieren?

12

Ich habe eine DVD mit 50 Folgen geladen (VIDEO_TS aus dem Programm ausgewählt). Wenn ich sie jetzt in HandBrake öffne, werden dort 50 "Titel" angezeigt. Ich wähle das Ausgabeformat 320x240 und beginne mit der Konvertierung. Dann klicke ich zum nächsten Titel, mache es noch einmal, 50 Mal.

Gibt es eine Möglichkeit, dies zu beschleunigen?, Da es sich nicht an meine Einstellungen erinnert, wenn ich auf den nächsten Titel klicke. und ich habe versucht, ein Preset zu machen, aber es stürzt jedes Mal ab, wenn ich es aus der Preset-Liste auswähle.

Anfänger
quelle

Antworten:

12

Sie können ein Shell-Skript schreiben, um HandBrakeCLI für jeden Titel aufzurufen .

Linux ( Quelle ):

$ 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
quelle
Gibt es dafür keine GUI-Optionen? über dieses Windows-Skriptbeispiel; Was mache ich, wenn der $ title keine Zahl ist? Ich bin nicht sicher, was dieser Code tut. Möchtest du das erklären?
Rookie
1
GUI-Option: Ja, es gibt: Zur Warteschlange hinzufügen -> Alle hinzufügen. Es ist jedoch als (experimentell) markiert und hat nicht funktioniert, als ich es ausprobiert habe.
Grilse
$ title ist keine Zahl: $ title ist immer eine Zahl. So funktionieren DVDs. Erläuterung: Nun, es ist eine for-Schleife, die von 1 bis 4 zählt und für jede Zählung HandBrakeCLI.exe mit einigen Parametern ausführt. Schauen Sie sich "HandBrakeCLI.exe --help" an, um zu sehen, was die Parameter bedeuten.
Grilse
Ich bin mir nicht sicher, was Sie sonst noch wissen möchten. Fragen Sie etwas Bestimmtes und ich werde antworten.
Grilse
Danke, jetzt verstehe ich es besser. Es geht also nur um Befehlszeilenparameter, das kann ich!
Rookie
3

Basierend auf der Antwort von Grilse:

Dieses Skript verwendet keine feste Anzahl von Titeln, sondern lässt sie von der Handbremse bestimmen.

#!/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
quelle
Es ist erwähnenswert, dass Sie --min-duration 0 an HandBrakeCLI übergeben müssen, wenn Sie möchten, dass dieser Zählwert stimmt, da Sie sonst bei einigen DVDs zu kurz kommen. Zum Beispiel hat meine Test-DVD einen 10-Sekunden-Track 1, der in der endgültigen Ausgabe ignoriert wird.
Kaithar
2

Dies ist das Python-Skript, das ich mir ausgedacht habe, um es in mehrere Kapitel aufzuteilen. Die Nummer wird automatisch extrahiert.

Beachten Sie, dass:

  1. Sie benötigen Handbrake CLI (derzeit verfügbar unter folgender Adresse: https://handbrake.fr/downloads2.php )
  2. Sie müssen den Installationsordner von Handbrake CLI in Ihrem PATH haben

Sie müssen nur das folgende Python-Skript mit dem Speicherort der DVD als Argument des Skripts aufrufen.

#!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.
quelle
0

Das Extrahieren der Dateien in Linux Ubuntu über die CLI hat hervorragend funktioniert. Die Zeile, die ich unten verwendet habe, wiederholt die Syntax, die mit einer kleinen Verstärkung angegeben wurde, um MPEG-4 und Qualität zu erzwingen. Wenn Untertitel benötigt werden, müssten meines Erachtens die CLI-Parameter und -Argumente (Command Line) erweitert werden.

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
Laube markieren
quelle
0

Die Zeile count=$(echo $rawout | grep -Eao "\\+ title [0-9]+:" | wc -l)von @ForestPhoenix funktioniert nicht, wenn das erste Kapitel kleiner als 10 Sekunden ist.

Dies ist eine Verbesserung des Codes:

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
quelle
1
Willkommen bei Superuser. Bitte nehmen Sie an der Tour unter superuser.com/Tour teil , um das Beste aus dieser Website herauszuholen. In Bezug auf diese Antwort schlage ich vor, dass Sie die Frage bitte auf Englisch beantworten können, wenn sie auf Englisch ist. Ich sehe, dass nach dem ersten Befehl, den Sie geschrieben haben -> nicht funktioniert, wenn die ersten Elemente weniger als 10 Sekunden sind.! Dann haben Sie gezeigt, was "besser" ist
SDsolar
@SDsolar: Ich habe versucht zu übersetzen, da diese Antwort konstruktiv war. Ich habe vor 14 Jahren aufgehört, Deutsch zu lernen, also hoffe ich, dass ich nicht falsch übersetzt habe :)
Jean-Francois T.
-1

Sie können die Aufgaben zur Warteschlange hinzufügen

Von Link 2

Ändern Sie einfach den Titel, das Kapitel oder die Quelle, die verwendet werden, und benennen Sie die Zieldatei um. Passen Sie die gewünschten Einstellungen an. Klicken Sie dann in der Symbolleiste auf die Schaltfläche "Zur Warteschlange hinzufügen". Wiederholen Sie diese Schritte für den gesamten Stapel von Videos, die Sie konvertieren möchten.

Einige der Kommentare besagen, dass sie Probleme beim Überschreiben der vorherigen Datei hatten. Sie müssen also sicher sein, dass Sie sie richtig benennen. Stellen Sie sicher, dass einige Arbeiten ausgeführt werden, bevor Sie es laufen lassen.

Sealz
quelle
Das Hinzufügen zur Warteschlange beseitigt nicht das Problem der Wiederholung: Ich muss klicken, um den nächsten Titel auszuwählen, die Auflösung zu ändern, auf "Warteschlange hinzufügen" klicken und wiederholen. Ich möchte einfach alle Titel auf einmal mit genau den gleichen Einstellungen konvertieren. Dies scheint nur für Kapitel
Rookie