Ajuda com script MKV para MP4 Remux

Ajuda com script MKV para MP4 Remux

Visão geral:

Estou tentando remuxar minha biblioteca principalmente MKV para MP4. Eu tenho um script que extraiu legendas dos arquivos de vídeo.

Eu tenho outro script que irá remuxar qualquer arquivo .mkv em uma determinada pasta. O que eu preciso é que o scriptapenaspastas remux onde detecta que existem arquivos .srt.

Todos os arquivos .srt terminam com ***.eng.srt

Aqui está meu script remux atual:

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

Obrigado! Qualquer ajuda será muito apreciada.

Responder1

Acho que você está procurando por isso:

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

Eu removi o IFS='\n'já que não está fazendo nada de útil lá, seu forloop é bastante seguro mesmo com nomes contendo espaços em branco, desde que você cite suas variáveis.

Os [ -e foo ]testes para a existência de foo. Por outro lado, [ ! -e foo ]é verdade se não houver foo. Neste caso, fooé um glob ( *.srt), portanto o teste será falso se algum arquivo correspondente for encontrado. No script acima, &&significa que se nenhum srtarquivo for encontrado, a mensagem de erro será impressa e o script será encerrado.

informação relacionada