使用 ffmpeg 的 Bash 脚本

使用 ffmpeg 的 Bash 脚本

我的 HD Homerun for PLEX 保存 .TS 文件(传输流)。

为了将其缩小到 720,我使用以下脚本:

#!/bin/bash 
for INF in *.ts 
    do ffmpeg -i "$INF" -vf scale=-1:720 -c:v libx264 -crf 23 -preset ultrafast -c:a copy "${INF%.*}.mp4" 
done

这效果很好,并将文件夹 .sh 脚本中的每个 .TS 转换为存储到 mp4 容器中。然后我运行以下脚本:

#!/usr/local/bin/bash
for INF in *.mp4 
do
    echo "Extracting subtitles"
    ccextractor "$INF" -o "/tmp/$(basename "$INF" .ts).srt"

    echo "Moving subtitles" 
    mv -v /tmp/*.srt .
done

我的目标是将这两个 bash 循环合并到一个脚本中。理想情况下,我想要一个脚本,该脚本将:a)扫描当前文件夹和所有子文件夹以查找 .ts 文件。 b) 将 .ts 重新混合到 .mp4 c) 从 .ts 中提取隐藏式字幕并存储为 .srt d) 删除所有 .ts 文件

我不确定在“for INF in *.ts”之后添加 / 是否会包含子目录。不确定如何将这两个脚本加入到一个文件中或将删除文件代码放在哪里

任何想法将不胜感激。 -肖恩

答案1

这个怎么样:

for x in *.ts
do
  y=$(basename "$x" .ts)
  ffmpeg -i "$x" "$y".mp4
  ffmpeg -i "$x" "$y".srt
done

相关内容