VLC e você são os culpados, mas isso depende do seu objetivo final.
O FFmpeg não está adicionando legendas duas vezes, mas o VLC está detectando automaticamente o arquivo .ass
no diretório e adicionando-o à lista de legendas disponíveis. O VLC procura recursos - como arquivos de legenda - que tenham exatamente o mesmo nome do arquivo de vídeo e os carreguem na janela do player para fins de reprodução.
Então, se você estiver jogando GreatMovie.mkv
, você tem um arquivo GreatMovie.ass
no diretório e o reproduz, o VLC exibirá as legendas incorporadas no arquivo MKV , bem como que GreatMovie.ass
está sentado ao lado do arquivo MKV nesse diretório.
Agora eu digo que depende do seu objetivo final. Se seu objetivo final for simplesmente um arquivo MKV combinado que contenha todos os recursos, será necessário excluir esse arquivo .ass
depois que ele for concluído. Então, eu modificaria seu script adicionando um rm -f "$subname";
logo após o comando ffmpeg
, como tal para fazer isso:
for i in *.mp4; do
name='echo $i | cut -d'.' -f1';
mp4name="$name.mp4";
subname="$name.ass";
mkvname="$name.mkv";
ffmpeg -i "$mp4name" -i "$subname" -map 0:v -map 0:a -map 1:s -metadata:s:a language=jpn -metadata:s:s:0 language=eng -c copy -y "$mkvname"
rm -f "$subname";
done
echo "Done";
Ou talvez crie um diretório completed_subs/
e mova as legendas para esse diretório quando terminar.
for i in *.mp4; do
name='echo $i | cut -d'.' -f1';
mp4name="$name.mp4";
subname="$name.ass";
mkvname="$name.mkv";
ffmpeg -i "$mp4name" -i "$subname" -map 0:v -map 0:a -map 1:s -metadata:s:a language=jpn -metadata:s:s:0 language=eng -c copy -y "$mkvname"
mkdir -p "completed_sub";
mv $subname "completed_sub/$subname";
done
echo "Done";
Dessa forma, você remove as legendas do diretório de processamento para que a exibição do arquivo MKV mostre apenas os recursos de legenda incorporados no arquivo MKV e os arquivos .ass
da legenda autônoma estejam em completed_sub/
. Assim, você pode não apenas ver o que foi concluído, mas também reter os arquivos de legenda autônomos, se de alguma forma precisar deles no futuro.