Помогите со скриптом MKV to MP4 Remux

Помогите со скриптом MKV to MP4 Remux

Обзор:

Я пытаюсь переделать мою в основном MKV библиотеку в MP4. У меня есть скрипт, который прошел и извлек субтитры из видеофайлов.

У меня есть другой скрипт, который будет ремуксировать любые файлы .mkv в указанной папке. Мне нужно, чтобы скрипттолькопапки remux, в которых он обнаруживает файлы .srt.

Все файлы .srt заканчиваются на ***.eng.srt

Вот мой текущий скрипт ремикса:

#!/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 ]является истинным, если нет foo. В этом случае fooявляется glob ( *.srt), поэтому тест будет ложным, если будут найдены какие-либо соответствующие файлы. В приведенном выше сценарии означает, &&что если srtфайлы не будут найдены, будет выведено сообщение об ошибке и сценарий завершит работу.

Связанный контент