Nasıl 50 bölüm kolayca HandBrake ile DVD 50 .mp4 dönüştürmek için?


12

50 bölümlü bir DVD yükledim (programdan VIDEO_TS'i seçtim), şimdi HandBrake'de açtığımda, orada 50 "başlık" gösteriyor. 320x240 çıktı biçimini seçip dönüştürmeye başlarım. Sonra bir sonraki başlığa tıklıyorum, 50 kez tekrar yapıyorum.

Bunu hızlandırmanın herhangi bir yolu var mı ?, çünkü bir sonraki başlığı tıkladığımda ayarlarımı hatırlamıyor. ve ben ön ayar yapmaya çalıştım ama her ön ayar listesinden seçtiğimde çöküyor.

Yanıtlar:


12

Her başlık için HandBrakeCLI'yi çağırmak üzere bir kabuk komut dosyası yazabilirsiniz .

Linux ( kaynak ):

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

Bunun için GUI seçeneği yok mu? bu windows komut dosyası örneği hakkında; $ başlık bir sayı değilse ne yapmalıyım? im ne kod emin değilim. açıklamak ister misin?
Çaylak

1
GUI seçeneği: evet var: Kuyruğa ekle -> Tümünü ekle. Ancak, (Deneysel) olarak işaretlendi ve denediğimde işe yaramadı.
Şubat'ta Grilse

$ title sayı değil: $ title her zaman bir sayı olacaktır. DVD'ler böyle çalışır. Açıklama: 1'den 4'e kadar sayılan bir for-loop ve her bir sayı için HandBrakeCLI.exe'yi bazı parametrelerle yürütür. Parametrelerin ne anlama geldiğini görmek için "HandBrakeCLI.exe --help" öğesine bakın.
Şubat'ta Grilse

Başka ne bilmek istediğinizden emin değilim. Belirli bir şey sor ve ben cevaplayacağım.
Şubat'ta Grilse

Teşekkürler, şimdi daha iyi anlıyorum. Yani sadece komut satırı parametreleriyle ilgili, bunu yapabilirim!
Çaylak

3

Grilse'nin Yanıtına Göre:

Bu komut dosyası sabit sayıda başlık kullanmaz, ancak el freninin bunları belirlemesine izin verir.

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

Bu sayım değerinin doğru olmasını istiyorsanız --min-duration 0'ı HandBrakeCLI'ye geçirmeniz gerektiğini, aksi takdirde bazı DVD'lerde kısa sürebileceğinizi belirtmek gerekir. Örneğin, test DVD'mde son çıkışta yok sayılacak 10 saniyelik bir parça 1 var.
Kaithar

2

Küçük tuz parçamı ekleyerek, birkaç bölüme ayırmak için bulduğum Python betiği. Sayı otomatik olarak çıkarılır.

Bunu not et:

  1. Handbrake CLI'ye ihtiyacınız var (şu adreste şu adreste bulunmaktadır: https://handbrake.fr/downloads2.php )
  2. Eğer içinde El freni CLI yükleme klasörünü olması gerekir PATH

Betiğin argümanı olarak DVD konumuyla aşağıdaki Python betiğini çağırmanız yeterlidir.

#!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'daki dosyaları CLI aracılığıyla ayıklamak harika çalıştı. Aşağıda kullandığım çizgi, MPEG-4'ü ve kaliteyi zorlamak için küçük bir amplifikasyonla verilen sözdizimini tekrarlar. Altyazılar gerekiyorsa, komut satırı (CLI) parametrelerinin ve argümanlarının genişletilmesi gerektiğine inanıyorum.

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

Hat count=$(echo $rawout | grep -Eao "\\+ title [0-9]+:" | wc -l)İlk bölüm 10 saniyeden daha küçük olduğunda @ForestPhoenix dan çalışmaz.

Bu, kodun iyileştirilmesidir:

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'a hoş geldiniz. Bu siteden en iyi şekilde yararlanmak için lütfen superuser.com/Tour adresindeki tura katılın . Bu cevaba gelince, soru İngilizce olduğunda, lütfen İngilizce cevap verebilir misiniz? Gördüğünüz gibi yazdığınız ilk komuttan sonra -> ilk öğeler 10 saniyeden az olduğunda çalışmaz.! Sonra "Daha iyi" ne olduğunu gösterdin
SDsolar

@SDsolar: Bu cevap yapıcı olduğu için tercüme etmeye çalıştım. 14 yıl önce Almanca öğrenmeyi bıraktım, umarım yanlış tercüme etmedim :)
Jean-Francois T.

-1

Görevleri kuyruğa ekleyebilirsiniz

Bağlantı 2'den

Devam edin ve kullanılan başlığı, bölümü veya kaynağı değiştirin ve hedef dosyayı yeniden adlandırdığınızdan emin olun. İstediğiniz ayarları değiştirin. Ardından araç çubuğundaki "Sıraya ekle" düğmesini tıklayın. Dönüştürmek istediğiniz videoların tamamı için bu adımları tekrarlayın.

Bazı yorumlar, önceki dosyanın üzerine yazarken sorun yaşadıklarını söylüyor. Bu yüzden onları doğru adlandırdığınızdan emin olmanız gerekir. Çalıştırmadan önce birkaç çalıştığınızdan emin olun.


kuyruğa ekleme tekrarlama sorunu ortadan kaldırmaz: i sonraki başlığı seçmek için tıklayın, çözünürlüğü değiştirin, "sıra ekle" tıklayın, tekrarlayın. ne istiyorum sadece aynı ayarları ile aynı anda tüm başlıkları dönüştürmek. bu sadece bölümler
Rookie

-1
    for ($title=1; $title -le 4; $title++) {
    &"C:\Program Files\HandBrake\HandBrakeCLI.exe" --input "source\sourceVideo.mp4" --title $title -e x264 -o "destination\$title.mp4"
}

Bu, kodu artık kullanılmayan @Grilse cevabına dayanmaktadır.


1
Süper Kullanıcıya Hoş Geldiniz! Bu soruya cevap verebilir, ancak neden böyle yaptığını açıklamak daha iyi bir yanıt olacaktır .
DavidPostill
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.