Come convertire facilmente 50 episodi da DVD in 50 .mp4 con HandBrake?


12

Ho caricato un DVD con 50 episodi (ho scelto VIDEO_TS dal programma), ora quando lo apro in HandBrake, mostra 50 "titoli". scelgo il formato di output 320x240 e inizio la conversione. Quindi faccio clic sul titolo successivo, lo faccio di nuovo, 50 volte.

C'è un modo per accelerarlo? Perché non ricordo le mie impostazioni quando faccio clic sul titolo successivo. e ho provato a fare il preset ma si blocca ogni volta che lo scelgo dall'elenco dei preset.

Risposte:


12

Puoi scrivere uno script di shell per invocare HandBrakeCLI per ciascun titolo.

Linux ( fonte ):

$ 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"
}

Non ci sono opzioni gui per questo? su quell'esempio di script di Windows; cosa devo fare se $ title non è un numero? non sono sicuro di cosa faccia quel codice. ti interessa spiegare?
Rookie,

1
Opzione GUI: sì, c'è: Aggiungi alla coda -> Aggiungi tutto. Tuttavia, è contrassegnato come (Sperimentale) e non ha funzionato quando l'ho provato.
Grilse,

$ title non è un numero: $ title sarà sempre un numero. Ecco come funziona il DVD. Spiegazione: beh, è ​​un for-loop che conta da 1 a 4 e, per ogni conteggio, esegue HandBrakeCLI.exe con alcuni parametri. Controlla "HandBrakeCLI.exe --help" per vedere cosa significano i parametri.
Grilse,

Non sono sicuro di cos'altro vuoi sapere. Chiedi qualcosa di specifico e ti risponderò.
Grilse,

Grazie, ora lo capisco meglio. Quindi si tratta solo di parametri della riga di comando, posso farlo!
Rookie,

3

Basato sulla risposta di Grilse:

Questo script non utilizza un numero fisso di titoli, ma consente di determinarli con il freno a mano.

#!/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

Vale la pena notare che se si desidera che il valore di conteggio sia corretto, è necessario passare --min-duration 0 a HandBrakeCLI, altrimenti si verrà a corto di alcuni DVD. Ad esempio, il mio DVD di prova ha una traccia 1 di 10 secondi che verrà ignorata nell'output finale.
Kaithar,

2

Aggiungendo il mio piccolo granello di sale, questo è lo script Python che ho ideato per dividere in diversi capitoli. Il numero viene estratto automaticamente.

Nota che:

  1. È necessario l' interfaccia della riga di comando del freno a mano (attualmente disponibile a questo indirizzo: https://handbrake.fr/downloads2.php )
  2. È necessario disporre della cartella di installazione della CLI del freno a mano nel PERCORSO

Devi solo chiamare il seguente script Python con la posizione del DVD come argomento dello 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}"')

0

L'estrazione dei file in Linux Ubuntu tramite l'interfaccia della riga di comando ha funzionato perfettamente. La linea che ho usato di seguito ripete la sintassi data con una piccola amplificazione per forzare MPEG-4 e qualità. Se sono necessari i sottotitoli, credo che i parametri e gli argomenti della riga di comando (CLI) dovrebbero essere ampliati.

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

0

La linea count=$(echo $rawout | grep -Eao "\\+ title [0-9]+:" | wc -l)di @ForestPhoenix non funziona quando il primo capitolo è inferiore a 10 secondi.

Questo è un miglioramento del codice:

rohausgabe=$(HandBrakeCLI -i "$iso" -t 0 2>&1 >/dev/null)
anzahl=$(echo $rohausgabe | grep -Eao "scan: DVD has [0-9]" | awk -F " " '{print $4}')

1
Benvenuto in Superuser. Fai il tour su superuser.com/Tour per ottenere il massimo da questo sito. Per quanto riguarda questa risposta, suggerisco che quando la domanda è in inglese, puoi rispondere in inglese? Vedo che dopo quel primo comando che hai scritto -> non funziona quando i primi elementi sono meno di 10 sec.! Quindi hai mostrato cosa è "Better"
SDsolar,

@SDsolar: ho provato a tradurre poiché questa risposta è stata costruttiva. Ho smesso di studiare il tedesco 14 anni fa, quindi spero di non aver tradotto male :)
Jean-Francois T.

-1

È possibile aggiungere le attività alla coda

Dal collegamento 2

Vai avanti e modifica il titolo, il capitolo o la fonte in uso e assicurati di rinominare il file di destinazione. Modifica le impostazioni che desideri. Quindi fare clic sul pulsante "Aggiungi alla coda" sulla barra degli strumenti. Ripeti questi passaggi per l'intero batch di video che desideri convertire.

Alcuni dei commenti affermano che stavano avendo problemi con la sovrascrittura del file precedente. Quindi dovrai essere sicuro di nominarli correttamente. Assicurati di lavorare un po 'prima di lasciarlo in esecuzione.


l'aggiunta alla coda non rimuove il problema della ripetizione: devo fare clic per selezionare il titolo successivo, modificare la risoluzione, fare clic su "Aggiungi coda", ripetere. quello che voglio è semplicemente convertire tutti i titoli contemporaneamente con le stesse impostazioni esatte. questo sembra essere possibile solo per i capitoli
Rookie,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.