Як легко перетворити 50 епізодів з DVD у 50 .mp4 за допомогою HandBrake?


12

Я завантажив у нього DVD з 50 епізодами (вибрав VIDEO_TS з програми), тепер, коли я відкриваю його в HandBrake, він показує там 50 "заголовків". Я вибираю вихідний формат 320x240 і починаю конвертувати. Потім натискаю на наступний заголовок, повторюю те ж саме, 50 разів.

Чи є якийсь спосіб прискорити це ?, тому що він не пам'ятає мої налаштування, коли натискаю наступний заголовок. і я намагався зробити попередньо встановлений, але він виходить з ладу кожен раз, коли я вибираю його зі списку пресетів.

Відповіді:


11

Ви можете написати сценарій оболонки, щоб викликати 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"
}

Чи немає варіантів для цього gui? про той приклад сценарію Windows; Що робити, якщо $ title не є номером? я не впевнений, що робить цей код. хочете пояснити?
Rookie

1
Параметр GUI: так, є: Додати в чергу -> Додати все. Однак він позначений як (Експериментальний), і він не спрацював, коли я його спробував.
Grilse

$ title не число: $ title завжди буде числом. Ось так працює DVD. Пояснення: ну, це цикл for, який нараховує від 1 до 4, і для кожного підрахунку він виконує HandBrakeCLI.exe з деякими параметрами. Перевірте "HandBrakeCLI.exe --help", щоб побачити, що означають параметри.
Grilse

Не впевнений, що ще хочеш знати. Запитайте щось конкретне, і я відповім.
Grilse

Дякую, зараз я це краще розумію. Так що все про лише параметри командного рядка, я можу це зробити!
Новачок

3

На основі відповіді від Grilse:

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

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

Варто зауважити, що якщо ви хочете, щоб це значення підрахунку було правильним, вам потрібно буде передати --minmin 0 на HandBrakeCLI, інакше на деяких DVD-дисках вам не вистачить. Наприклад, у мого тестового DVD є 10-секундний трек 1, який буде ігноровано у кінцевому висновку.
Кайтар

2

Додавши моє маленьке зерно солі, це сценарій Python, який я придумав, щоб розділити його на кілька розділів. Кількість витягується автоматично.

Зауважте, що:

  1. Вам потрібен CLI Handbrake CLI (наразі доступний за цією адресою: https://handbrake.fr/downloads2.php )
  2. Вам потрібно мати папку встановлення Handbrake CLI у вашому 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}')

1
Ласкаво просимо до Superuser. Пройдіть тур на superuser.com/Tour, щоб отримати максимальну користь від цього веб-сайту. Щодо цієї відповіді, я пропоную, коли запитання є англійською мовою, чи можете ви відповісти англійською? Я бачу, що після першої написаної вами команди -> не працює, коли перші пункти менше 10 сек! Потім ви показали, що таке "Краще"
SDsolar

@SDsolar: Я намагався перекласти, оскільки ця відповідь була конструктивною. Я перестав вивчати німецьку 14 років тому, тож сподіваюся, що не перекладав :)
Жан-Франсуа Т.

-1

Ви можете додати завдання до черги

З посилання 2

Просто вперед і змініть назву, главу чи джерело, яке використовується, і обов'язково перейменуйте файл призначення. Налаштуйте потрібні налаштування. Потім натисніть кнопку "Додати до черги" на панелі інструментів. Повторіть ці кроки для всієї групи відео, яку ви хочете конвертувати.

Деякі з коментарів кажуть, що у них виникли проблеми з перезаписом попереднього файлу. Тож вам доведеться бути впевненим, що ви їх правильно називали. Переконайтеся, що пройдете кілька робіт, перш ніж залишити її працювати.


додавання до черги не знімає проблему повторення: мені потрібно натиснути, щоб вибрати наступний заголовок, змінити роздільну здатність, натиснути «додати чергу», повторити. що я хочу - це просто перетворити всі заголовки одразу з точно такими ж налаштуваннями. це здається можливим лише для розділів
Rookie
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.