MKV에서 MP4 Remux 스크립트에 대한 도움말

MKV에서 MP4 Remux 스크립트에 대한 도움말

개요:

주로 MKV 라이브러리를 MP4로 리먹싱하려고 합니다. 비디오 파일에서 자막을 추출한 스크립트가 있습니다.

특정 폴더의 .mkv 파일을 다시 다중화하는 또 다른 스크립트가 있습니다. 나에게 필요한 것은 스크립트가오직.srt 파일이 있음을 감지하는 remux 폴더.

모든 .srt 파일은 ***.eng.srt로 끝납니다.

현재 remux 스크립트는 다음과 같습니다.

#!/bin/bash 
IFS=$'\n' 
clear 
for filename in *.mkv 
do 
echo "$filename" 
newfilename="${filename%.mkv}.mp4" 
echo "${newfilename}" 
ffmpeg -fix_sub_duration -i $filename -c:v copy -c:a copy -c:s mov_text $newfilename 
done

감사해요! 어떤 도움이라도 대단히 감사하겠습니다.

답변1

나는 당신이 이것을 찾고 있다고 생각합니다 :

#!/bin/bash 

clear
for filename in *.mkv 
do 
    ## Exit if there are no srt files
    [ ! -e *.srt ] && echo "No .srt files found, exiting" && exit
    echo "$filename" 
    newfilename="${filename%.mkv}.mp4" 
    echo "${newfilename}" 
    ffmpeg -fix_sub_duration -i "$filename" -c:v copy -c:a copy -c:s mov_text "$newfilename" 
done

IFS='\n'거기에서 유용한 작업을 수행하지 않기 때문에 제거했습니다 . for변수를 인용하는 한 이름에 공백이 포함되어 있어도 루프는 매우 안전합니다.

[ -e foo ]의 존재 여부를 테스트 합니다 foo. 반대로 [ ! -e foo ]가 없으면 true입니다 foo. 이 경우 은 fooglob( *.srt)이므로 일치하는 파일이 있으면 테스트가 false가 됩니다. 위 스크립트에서 파일이 발견 &&되지 않으면 srt오류 메시지가 인쇄되고 스크립트가 종료된다는 의미입니다.

관련 정보