Как легко конвертировать 50 эпизодов с DVD в 50 .mp4 с помощью HandBrake?

12

Я загрузил DVD с 50 эпизодами в нем (выбрал VIDEO_TS из программы), теперь, когда я открываю его в HandBrake, он показывает там 50 «титров». Я выбираю выходной формат 320x240 и начинаю конвертировать. Затем я нажимаю на следующий заголовок, делаю то же самое снова, 50 раз.

Есть ли способ ускорить это ?, потому что он не запоминает мои настройки, когда я нажимаю на следующий заголовок. и я попытался сделать пресет, но он вылетает каждый раз, когда я выбираю его из списка пресетов.

Новобранец
источник

Ответы:

12

Вы можете написать скрипт оболочки для вызова HandBrakeCLI для каждого заголовка.

Linux ( источник ):

$ 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"
}
молодой лосось
источник
Есть ли варианты графического интерфейса для этого? о том примере скрипта Windows; Что мне делать, если $ title не является числом? Я не уверен, что делает этот код. хочешь объяснить?
Новобранец
1
Опция графического интерфейса: есть: Добавить в очередь -> Добавить все. Тем не менее, он помечен как (экспериментальный), и он не работал, когда я попробовал.
Grilse
$ title не число: $ title всегда будет числом. Вот как работает DVD. Объяснение: ну, это цикл for, который считает от 1 до 4, и для каждого счетчика он выполняет HandBrakeCLI.exe с некоторыми параметрами. Проверьте "HandBrakeCLI.exe --help", чтобы увидеть, что означают параметры.
Grilse
Не уверен, что еще вы хотите знать. Спросите что-то конкретное, и я отвечу.
Grilse
Спасибо, теперь я понимаю это лучше. Так что все дело только в параметрах командной строки, я могу это сделать!
Новобранец
3

Основываясь на ответе Грильса:

Этот сценарий не использует фиксированное количество заголовков, но позволяет ручному тормозу определять их.

#!/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
источник
Стоит отметить, что если вы хотите, чтобы значение счетчика было правильным, вам нужно передать --min-duration 0 в HandBrakeCLI, иначе вам не хватит некоторых DVD. Например, мой тестовый DVD имеет 10-секундную дорожку 1, которая будет проигнорирована в конечном выводе.
Кайтар
2

Добавляя мою небольшую часть соли, это сценарий Python, который я придумал, чтобы разделить на несколько глав. Номер извлекается автоматически.

Обратите внимание, что:

  1. Вам нужен CLI Handbrake (в настоящее время доступен по этому адресу: https://handbrake.fr/downloads2.php )
  2. У вас должна быть папка установки CLI Handbrake в вашем PATH

Вам просто нужно вызвать следующий скрипт Python с расположением DVD в качестве аргумента скрипта.

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

Извлечение файлов в Linux Ubuntu через CLI работало отлично. Строка, которую я использовал ниже, повторяет синтаксис, приведенный с небольшим усилением, чтобы усилить MPEG-4 и качество. Если нужны субтитры, я считаю, что параметры и аргументы командной строки (CLI) необходимо будет расширить.

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

Строка count=$(echo $rawout | grep -Eao "\\+ title [0-9]+:" | wc -l)из @ForestPhoenix не работает, когда первая глава меньше 10 секунд.

Это улучшение кода:

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
источник
1
Добро пожаловать в Superuser. Пожалуйста, возьмите тур на superuser.com/Tour, чтобы получить максимальную отдачу от этого сайта. Что касается этого ответа, я предлагаю, чтобы, когда вопрос был на английском, не могли бы вы ответить на английском? Я вижу, что после этой первой команды, которую вы написали ->, не работает, если первые элементы менее 10 секунд! Тогда вы показали, что такое «лучше»
SDsolar
@Ssolar: я пытался перевести, так как этот ответ был конструктивным. Я прекратил изучать немецкий язык 14 лет назад, так что я надеюсь, что не ошибся в переводе :)
Жан-Франсуа Т.
-1

Вы можете добавить задачи в очередь

Из ссылки 2

Просто измените заголовок, главу или используемый источник и обязательно переименуйте конечный файл. Настройте любые параметры, которые вы хотите. Затем нажмите кнопку «Добавить в очередь» на панели инструментов. Повторите эти шаги для всей серии видео, которые вы хотите конвертировать.

В некоторых комментариях говорится, что у них были проблемы с перезаписью предыдущего файла. Таким образом, вы должны быть уверены, что вы называете их правильно. Убедитесь, что немного поработали, прежде чем оставить его запущенным.

sealz
источник
добавление в очередь не устраняет проблему повторения: мне нужно нажать, чтобы выбрать следующий заголовок, изменить разрешение, нажать «добавить очередь», повторить. то, что я хочу, это просто конвертировать все названия сразу с одинаковыми настройками. кажется, что это возможно только для глав
новобранец