MKV 到 MP4 Remux 腳本的幫助

MKV 到 MP4 Remux 腳本的幫助

概述:

我正在嘗試將我的大部分 MKV 庫重新混合為 MP4。我有一個腳本,它已經檢查並從視訊檔案中提取了字幕。

我有另一個腳本,可以重新混合給定資料夾中的任何 .mkv 檔案。我需要的是腳本僅有的remux 資料夾中偵測到存在 .srt 檔案。

所有 .srt 文件均以 ***.eng.srt 結尾

這是我目前的 remux 腳本:

#!/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),因此如果找到任何符合文件,測試將為 false。在上面的腳本中,這&&意味著如果沒有srt找到文件,將列印錯誤訊息並且腳本將退出。

相關內容