답변:
자막 제거 :
mkvmerge -o output.mkv input.mkv -S # remove all subtitle tracks
mkvmerge -o output.mkv input.mkv -s 3,4 # remove tracks 3 and 4
mkvmerge -o output.mkv input.mkv -s '!3' # remove all subtitle tracks except 3
mkvmerge -i input.mkv # show track numbers
자막 추가 :
mkvmerge -o output.mkv input.mkv subs.srt
mkvmerge -o output.mkv input.mkv --language 0:ger --track-name 0:German subs.srt
자막 추출 :
mkvextract tracks input.mkv 3:subs.srt
for f in *.mkv; do
sub=$(mkvmerge -i "$f" | awk '$4=="subtitles"{print;exit}')
[[ $sub ]] || continue
[[ $sub =~ S_TEXT/ASS ]] && ext=ass || ext=srt
track=$(awk -F '[ :]' '{print $3}' <<< "$sub")
mkvextract tracks "$f" "$track:${f%mkv}$ext"
done
mkvmerge 및 mkvextract는로 설치할 수 있습니다 brew install mkvtoolnix
.
--default-track '0:0'
.
자막을 표시하는 기본 방법에는 두 가지가 있습니다. 비디오 자체로 픽셀을 인코딩 할 수 있습니다. 이것을 "하드 서빙"이라고합니다. 여기서 장점은 비디오 플레이어의 단순성입니다. 비디오 스트림 일뿐입니다. 단점은 비디오를 다시 인코딩해야하는데 시간이 걸리고 일부 충실도가 손실된다는 것입니다. 더 나은 번역을 얻으면 비디오의 픽셀입니다. 그리고 하나의 언어 만 가질 수 있습니다.
다소 좋은 점은 비디오 스트림과 분리 된 텍스트 파일을 갖는 "소프트 서빙 (softsubbing)"입니다. 자막 파일에는 여러 가지 형식이 있지만 기본적으로 "텍스트, 몇시 시작, 몇시 제거"를 기본으로합니다. 일부 화면의 색상 및 방향과 같은 추가 기능이 있습니다. 이것의 장점은 여러 언어 (DVD를 생각하고 여러 언어를 사용할 수 있음)를 가질 수 있고 파일에서 오타 등을 수정할 수 있다는 것입니다. 자막이 필요없는 경우 자막을 사용 중지하면됩니다.
Softsub는 별도의 파일 일 수 있습니다. 대부분의 플레이어는 기본 비디오와 동일한 이름 (다른 확장자)을 가진 자막을 자동으로 찾습니다. 또는 특정 컨테이너 파일 형식 (예 : MKV)에 포함 할 수 있습니다. MKV 파일 도구에 대한 MKVtoolnix (Mac 포트 있음)를 확인하십시오 . 다시 인코딩하지 않고 소프트 서브를 포함시킬 수 있습니다.
모든 플레이어가 모든 형식을 지원할 수있는 것은 아닙니다. 내 경험에 따르면 XBMC에는 SSA 파일에 문제가 있지만 훨씬 더 간단한 SRT 파일은 좋습니다. VLC는 플랫폼에서 지원되는 경우 무엇이든 재생할 수 있습니다.
나는 이것이 오래된 질문이라는 것을 알고 user495470
있으며 2013 년 현재 답변이 수락되었지만 질문의 일부는 파일에 자막을 추가하는 것에 관한 것이므로이 새로운 추가를 추가하고 싶었습니다.
기본적으로 수십 개의 .ass
자막을 비슷한 이름의 MKV 파일로 병합해야 했기 때문에 한 번에이 명령 하나만 수행해도 자르지 않았습니다. 그래서이 간단한 Bash 스크립트를 작성하여 현재 디렉토리에서 .ass
파일을 검색 한 다음 예상대로 병합합니다.
find -E . -maxdepth 1 -type f -iregex '.*\.(ASS|SRT)$' |\
while read FILEPATH
do
DIRNAME=$(dirname "${FILEPATH}");
BASENAME=$(basename "${FILEPATH}");
FILENAME="${BASENAME%.*}";
EXTENSION="${BASENAME##*.}"
mkvmerge -o "/Users/jake/${FILENAME}"-NEW.mkv "${FILENAME}".mp4 --language 0:eng --track-name 0:English "${FILENAME}"."${EXTENSION}"
done
물론,이 간단한 스크립트는 자막이 영어 인 것으로 가정하고이를 병합하지만 사용 요구에 따라 수동으로 조정할 수 있습니다. 자막과 MKV를 자동으로 병합하는 큰 문제는 다음과 같은 간단한 스크립트로 해결됩니다.