@
rationa1cuzz @
mxT52CRuqR6o5 @
pcmid 报错的单独执行都没问题,刚刚群里有人出手帮忙看了下,其实是循环有问题,改了下就好了。
咱萌新,就硬把一些代码拼凑在一起所以出错了,咱把改的贴出来算了
```bash
#!/bin/bash
clear
read -p "请输入视频格式后缀[比如 mkv 或者 mp4]:"
videotype=$REPLY
read -p "请输入字幕格式后缀[比如 ass 或者 srt]:"
subtype=$REPLY
read -p "请输入字幕信息[比如制作字幕的字幕组或者语言信息,示例 白月字幕组简体中文(Simplified Chinese) ]:"
subinfo=$REPLY
read -p "请输入输出文件夹路径[输出文件夹路径请不要设置成当前文件夹或者当前文件夹的子文件夹]:"
outputtotaldir=$REPLY
find . -type d -exec mkdir -p $outputtotaldir/\{\} \; # 在输出文件夹建立与当前文件夹内一模一样的目录结构
IFS_BAK=$IFS
IFS=$'\n'
for video in `find . -type f -name "*.$videotype"` # 查找所有.mkv 的视频文件并逐个将文件名写入$video 参数
do
prevideo="${video#*/}" # 去掉$video 路径里面最左边的 /以及 /左边的字符
subtitle="$(echo "$video" | sed "s/.$videotype$/.$subtype/")" # 用 sed 命令将$line 参数里"xxx xxx.mkv"的文件名转换成 jpg 结尾"xxx xxx.ass"
output="$outputtotaldir/$(echo "$prevideo" | sed "s/.$videotype$/[chs\&eng].mkv/")" # 用 sed 命令将$line 参数里"xxx xxx.mkv"的文件名转换成 jpg 结尾"xxx xxx[chs&eng].mkv"
ffmpeg -i "$video" -i "$subtitle" -map 0:v -map 0:a -map 1:s -metadata:s:s:0 language="$subinfo" -metadata:s:s:0 title="$subinfo" -c copy "$output"
done
IFS=$IFS_BAK
```