Bagaimana cara mengubah 50 episode dari DVD menjadi 50 .mp4 dengan HandBrake, dengan mudah?


12

Saya memuat DVD dengan 50 episode di dalamnya (pilih VIDEO_TS dari program), sekarang ketika saya membukanya di HandBrake, itu menunjukkan 50 "judul" di sana. saya memilih format output 320x240 dan mulai mengkonversi. Kemudian saya klik ke judul berikutnya, lakukan hal yang sama lagi, 50 kali.

Apakah ada cara untuk mempercepat ini ?, karena tidak ingat pengaturan saya ketika saya mengklik judul berikutnya. dan saya mencoba membuat preset tetapi crash setiap kali saya memilihnya dari daftar preset.

Jawaban:


12

Anda dapat menulis skrip shell untuk memanggil HandBrakeCLI untuk setiap judul.

Linux ( sumber ):

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

Apakah tidak ada opsi gui untuk ini? tentang contoh skrip windows; apa yang harus saya lakukan jika $ title bukan angka? Saya tidak yakin apa kode itu. mau menjelaskan?
Rookie

1
Opsi GUI: ya ada: Tambahkan ke antrian -> Tambahkan semua. Namun, ini ditandai sebagai (Eksperimental) dan tidak berfungsi ketika saya mencobanya.
Grilse

$ title bukan angka: $ title akan selalu berupa angka. Begitulah cara kerja DVD. Penjelasan: well, ini for-loop yang dihitung dari 1 hingga 4, dan untuk setiap hitungan, ia mengeksekusi HandBrakeCLI.exe dengan beberapa parameter. Lihat "HandBrakeCLI.exe --help" untuk melihat apa arti parameter.
Grilse

Tidak yakin apa lagi yang ingin Anda ketahui. Tanyakan sesuatu yang spesifik dan saya akan menjawab.
Grilse

Terima kasih, sekarang saya memahaminya dengan lebih baik. Jadi itu semua tentang parameter commandline saja, saya bisa melakukan itu!
Rookie

3

Berdasarkan Jawaban dari Grilse:

Script ini tidak menggunakan jumlah judul yang tetap, tetapi memungkinkan rem tangan menentukannya.

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

Perlu dicatat bahwa jika Anda ingin nilai penghitungan itu benar, Anda harus meneruskan --min-durasi 0 ke HandBrakeCLI, jika tidak, Anda akan kekurangan beberapa DVD. Misalnya, DVD uji saya memiliki trek 10 detik 1 yang akan diabaikan dalam hasil akhir.
Kaithar

2

Menambahkan sedikit garam, ini adalah skrip Python yang saya buat untuk memecah menjadi beberapa bab. Jumlahnya diekstraksi secara otomatis.

Perhatikan bahwa:

  1. Anda memerlukan Handbrake CLI (saat ini tersedia di alamat ini: https://handbrake.fr/downloads2.php )
  2. Anda harus memiliki folder instalasi Handbrake CLI di PATH Anda

Anda hanya perlu memanggil skrip Python berikut dengan lokasi DVD sebagai argumen skrip.

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

Mengekstrak file di Linux Ubuntu melalui CLI bekerja dengan sangat baik. Baris yang saya gunakan di bawah ini mengulangi sintaks yang diberikan dengan sedikit amplifikasi untuk memaksa MPEG-4 dan kualitas. Jika subtitle diperlukan, saya yakin parameter dan argumen command line (CLI) perlu diperluas.

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

Baris count=$(echo $rawout | grep -Eao "\\+ title [0-9]+:" | wc -l)dari @ForestPhoenix tidak berfungsi ketika bab pertama lebih kecil dari 10 detik.

Ini merupakan peningkatan dari kode:

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
Selamat datang di Superuser. Silakan ikuti tur di superuser.com/Tour untuk mendapatkan hasil maksimal dari situs ini. Mengenai jawaban ini, saya sarankan bahwa ketika pertanyaannya dalam bahasa Inggris, bisakah Anda menjawabnya dalam bahasa Inggris? Saya melihat bahwa setelah perintah pertama yang Anda tulis -> tidak berfungsi ketika item pertama kurang dari 10 detik! Lalu Anda menunjukkan apa yang "Lebih Baik"
SDsolar

@ SDsolar: Saya mencoba menerjemahkan karena jawaban ini konstruktif. Saya berhenti belajar bahasa Jerman 14 tahun yang lalu, jadi saya harap saya tidak salah menerjemahkan :)
Jean-Francois T.

-1

Anda dapat menambahkan tugas ke antrian

Dari Link 2

Silakan saja mengubah judul, bab, atau sumber yang digunakan, dan pastikan untuk mengganti nama file tujuan. Tweak pengaturan yang Anda inginkan. Kemudian klik tombol "Tambahkan ke antrian" pada bilah alat. Ulangi langkah-langkah ini untuk seluruh kumpulan video yang ingin Anda konversi.

Beberapa komentar mengatakan bahwa mereka mengalami masalah dengan menimpa file sebelumnya. Jadi, Anda harus yakin memberi nama dengan benar. Pastikan beberapa pekerjaan sebelum Anda membiarkannya berjalan.


menambahkan ke antrian tidak menghapus masalah pengulangan: saya perlu mengklik untuk memilih judul berikutnya, mengubah resolusi, klik "tambahkan antrian", ulangi. yang saya inginkan adalah dengan mengkonversi semua judul sekaligus dengan pengaturan yang sama persis. ini tampaknya hanya mungkin untuk bab
Rookie
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.