VLC e tu sei la colpa, ma dipende dal tuo obiettivo finale.
FFmpeg non aggiunge due sottotitoli, ma VLC rileva automaticamente il .ass
file nella directory e lo aggiunge all'elenco dei sottotitoli disponibili. VLC cerca risorse — come i file dei sottotitoli — che hanno lo stesso nome del file video e li caricano nella finestra del lettore a scopo di riproduzione.
Quindi, se stai giocando GreatMovie.mkv
hai un GreatMovie.ass
file nella directory e lo riproduci, VLC mostrerà i sottotitoli incorporati nel file MKV e quello GreatMovie.ass
che si trova accanto al file MKV in quella directory.
Ora dico che dipende dal tuo obiettivo finale. Se il tuo obiettivo finale è semplicemente un file MKV combinato che contenga tutti gli asset, devi eliminarlo .ass
dopo averlo fatto. Quindi vorrei modificare il tuo script, aggiungendo rm -f "$subname";
subito dopo il ffmpeg
comando, come tale per farlo:
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";
O forse creare una completed_subs/
directory e spostare i sottotitoli in quella directory al termine.
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";
In questo modo rimuovi i sottotitoli dalla directory di elaborazione, quindi la visualizzazione del file MKV mostrerà solo le risorse dei sottotitoli incorporate nel file MKV e i .ass
file dei sottotitoli standalone sono ora presenti completed_sub/
. Quindi non solo puoi vedere cosa è stato completato, ma anche conservare i file dei sottotitoli autonomi se in qualche modo ne hai bisogno in futuro.