HandBrake를 사용하여 DVD에서 50 에피소드를 50 .mp4로 쉽게 변환하는 방법은 무엇입니까?


12

HandBrake에서 열면 50 개의 에피소드가 들어있는 DVD를로드했습니다 (프로그램에서 VIDEO_TS 선택). 이제 50 개의 "제목"이 표시됩니다. 320x240 출력 형식을 선택하고 변환을 시작합니다. 그런 다음 다음 제목을 클릭하고 다시 50 번 반복하십시오.

다음 제목을 클릭해도 설정이 기억 나지 않기 때문에 속도를 높일 수있는 방법이 있습니까? 사전 설정을 시도했지만 사전 설정 목록에서 선택할 때마다 충돌이 발생합니다.

답변:


11

각 타이틀에 대해 HandBrakeCLI 를 호출하는 쉘 스크립트를 작성할 수 있습니다 .

리눅스 ( 소스 ) :

$ 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 옵션이 없습니까? 그 윈도우 스크립트 예제에 대해; $ title이 숫자가 아닌 경우 어떻게해야합니까? 해당 코드의 기능을 잘 모르겠습니다. 설명 할까?
Rookie

1
GUI 옵션 : 예 : 대기열에 추가-> 모두 추가. 그러나 (실험적)으로 표시되어 있으며 시도했을 때 작동하지 않았습니다.
Grilse

숫자가 아닌 $ title : $ title은 항상 숫자입니다. DVD가 작동하는 방식입니다. 설명 : 글쎄, 그것은 1에서 4까지를 계산하는 for-loop이며, 각 수에 대해 몇 가지 매개 변수를 사용하여 HandBrakeCLI.exe를 실행합니다. 매개 변수의 의미를 확인하려면 "HandBrakeCLI.exe --help"를 확인하십시오.
Grilse

무엇을 알고 싶은지 잘 모르겠습니다. 구체적으로 물어 보면 대답하겠습니다.
Grilse

고마워, 이제 더 잘 이해합니다. 따라서 명령 줄 매개 변수에 관한 모든 것이 가능합니다.
Rookie

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

카운트 값을 올바르게하려면 최소-최소 0을 HandBrakeCLI로 전달해야합니다. 그렇지 않으면 일부 DVD에서 짧게 나올 것입니다. 예를 들어, 테스트 DVD에는 최종 출력에서 ​​무시되는 10 초 트랙 1이 있습니다.
Kaithar

2

내 작은 알갱이를 추가하면 이것은 여러 장으로 나누기 위해 내가 만든 Python 스크립트입니다. 숫자는 자동으로 추출됩니다.

참고 :

  1. 핸드 브레이크 CLI 가 필요합니다 (현재이 주소에서 사용 가능 : https://handbrake.fr/downloads2.php ).
  2. PATH 에 Handbrake CLI의 설치 폴더가 있어야합니다.

DVD의 위치를 ​​스크립트의 인수로하여 다음 Python 스크립트를 호출하면됩니다.

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

CLI를 통해 Linux Ubuntu에서 파일을 추출하면 효과적이었습니다. 아래에서 사용한 줄은 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)첫 번째 챕터가 10 초보다 작 으면 @ForestPhoenix 의 라인 이 작동하지 않습니다.

이것은 코드의 개선입니다.

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.com/Tour 에서 둘러보십시오 . 이 답변에 관해서는, 질문이 영어로되어있을 때 영어로 대답 해 주시겠습니까? 첫 번째 명령을 쓴 후 첫 번째 항목이 10 초 미만이면 작동하지 않습니다. 그런 다음 "더 나은"것이 무엇인지 보여주었습니다
SDsolar

@ SDsolar :이 답변이 건설적인 것처럼 번역하려고했습니다. 나는 14 년 전에 독일어 공부를 멈 췄기 때문에 내가 잘못 번역하지 않기를 바랍니다. :)
Jean-Francois T.

-1

작업을 대기열에 추가 할 수 있습니다

링크 2에서

계속해서 제목, 챕터 또는 사용중인 소스를 변경하고 대상 파일의 이름을 바꾸십시오. 원하는 설정을 조정하십시오. 그런 다음 툴바에서 "대기열에 추가"버튼을 클릭하십시오. 변환하려는 전체 비디오 배치에 대해이 단계를 반복하십시오.

일부 의견에서는 이전 파일을 덮어 쓰는 데 문제가 있다고 말합니다. 따라서 이름을 올바르게 지정해야합니다. 실행하기 전에 몇 가지 작업을 수행하십시오.


대기열에 추가해도 반복 문제가 해결되지 않습니다. 다음 제목을 선택하고 해상도를 변경 한 다음 "대기열 추가"를 클릭하고 반복해야합니다. 내가 원하는 것은 모든 타이틀을 한 번에 정확히 동일한 설정으로 변환하는 것입니다. 이것은 챕터
Rookie
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.