群晖---视频转音频脚本
B站 抖音上有很多音乐都很不错,但是下载的格式通常都是视频格式;
借助如下ai脚本即可实现自动转换视频为音频,转换完成后,自动删除源视频文件;
docker pull jrottenberg/ffmpeg
添加一个定时任务,内容输入 cd /volume1/docker/v2a && ./v2a.sh (脚本路径)
input_folder="改为你存放视频文件的文件夹路径"
output_folder="改为你存放音频文件的路径"
记得给脚本777的权限,否则可能无法运行
#!/bin/bash
# 获取脚本所在的目录
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
# 日志文件目录
LOG_DIR="${SCRIPT_DIR}/logs"
# 确保日志文件目录存在
mkdir -p "$LOG_DIR"
# 转换视频并删除源文件的函数
convert_and_delete() {
local video_file="$1"
local filename=$(basename -- "$video_file" .mp4)
local output_path="$output_folder/$filename.mp3"
# 检查输出文件是否已经存在,避免重复转换
if [ ! -f "$output_path" ]; then
# 使用 Docker 运行 FFmpeg 命令将视频转换为 MP3 音频
docker run --rm -v "$input_folder:/input" -v "$output_folder:/output" jrottenberg/ffmpeg -i "/input/$filename.mp4" -vn -acodec libmp3lame "/output/$filename.mp3"
# 检查 FFmpeg 命令是否成功执行
if [ $? -eq 0 ]; then
echo "Successfully converted $filename.mp3"
# 删除源视频文件
rm "$video_file"
if [ $? -eq 0 ]; then
echo "Deleted source video $filename.mp4"
else
echo "Failed to delete source video $filename.mp4"
fi
else
echo "Error converting $filename.mp4 to MP3"
fi
else
echo "Skipping $filename.mp4 as $filename.mp3 already exists"
fi
}
# 清理旧日志文件的函数
cleanup_old_logs() {
local days_to_keep=3
# 使用find命令查找并删除超过指定天数的日志文件
find "$LOG_DIR" -type f -name "conversion_*.log" -mtime +$days_to_keep -delete
}
# 输入文件夹和输出文件夹 这个是唯一需要设置的信息 把下面的路径改为你视频文件和音频文件的存储文件夹
input_folder="/volume1/docker/metube/"
output_folder="/volume1/docker/music/"
# 重定向标准输出和标准错误到日志文件
LOGFILE="${LOG_DIR}/conversion_$(date +'%Y%m%d_%H%M%S').log"
exec > >(tee -a "$LOGFILE") 2>&1
# 遍历输入文件夹中的所有视频文件
for video_file in "$input_folder"/*.mp4; do
# 跳过不存在的文件
if [ ! -f "$video_file" ]; then
echo "Skipping non-existent file: $video_file"
continue
fi
convert_and_delete "$video_file"
done
# 清理旧日志文件
cleanup_old_logs
# 脚本结束提示(此消息也会写入日志文件)
echo "Conversion complete. Logs have been cleaned up. See remaining logs in $LOG_DIR for details."
Comments