有关 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),因此如果找到任何匹配的文件,测试将为假。在上面的脚本中,这&&意味着如果没有srt找到文件,则会打印错误消息并退出脚本。

相关内容