将MP4或WEBM视频文件转换为带缩略图的MP3的Shell脚本

大家好,我是无能。
如果直接使用ffmpeg将视频文件转换为音频文件,缩略图会丢失,所以我尝试用shell脚本来解决。
只需进行转换,然后提取并合并缩略图,之后删除不需要的文件并恢复名称。
#!/bin/bash
# 各目录路径
input_dir=“/media/m”
output_dir=“/media/m/mp3”
# 如果输出目录不存在则创建
mkdir -p “$output_dir”
# 指定格式 ※目前只转换为mp3,但为了以后有动力添加其他格式的分支,姑且先这样...
in=“mp4”
out=“mp3”
# 适用于目录中的所有文件
for file in “$input_dir”/*.${in}; do
# 指定base
base=$(basename “$file” .${in})
# 指定MP3路径
output=“${output_dir}/${base}.${out}”
# 指定缩略图路径
thumbnail=“${output_dir}/${base}_thumbnail.jpg”
# 将视频文件转换为mp3
ffmpeg -i “$file” -vn -acodec libmp3lame -qscale:a 2 “$output”
# 从视频文件提取缩略图
if ffmpeg -i “$file” -an -vframes 1 -q:v 2 “$thumbnail” -y; then
echo “Thumbnail extracted for $base”
ffmpeg -i “$output” -i “$thumbnail” -map 0 -map 1 -c copy -id3v2_version 3 -metadata:s:v title=“Alb
um cover” -metadata:s:v comment=“Cover (front)” -y “${output_dir}/${base}_with_thumbnail.${out}”
rm “${output_dir}/${base}.${out}”
rm “${output_dir}/${base}_thumbnail.jpg”
mv “${output_dir}/${base}_with_thumbnail.${out}” “${output_dir}/${base}.${out}”
else
echo “No found for $base”
fi
done
授予执行权限
chmod +x convert.sh
由于是通过SSH连接的,所以让它在会话断开后也能在后台运行
nohup ./convert.sh &
完毕。