Ajuda com script MKV para MP4 Remux

1

Visão geral:

Estou tentando remontar minha biblioteca MKV para MP4. Eu tenho um script que passou e extrai legendas dos arquivos de vídeo.

Eu tenho outro script que remodirá qualquer arquivo .mkv em uma determinada pasta. O que eu preciso é que o script para somente remux pastas onde ele detecta que existem arquivos .srt.

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

Este é o meu script de remuxo 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.

    
por Pat Woodward 13.10.2015 / 23:32

1 resposta

0

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' , pois ele não está fazendo nada de útil lá, seu for loop é bastante seguro, mesmo com nomes que contenham espaços em branco, desde que você cite suas variáveis.

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

    
por terdon 13.10.2015 / 23:56