使用shell 脚本实现快速压缩视频/ 图片
目的: 记录相关代码片段
代码如下:
#!/bin/bash
echo "压缩启动"
# 获取命令行参数
# ys.sh ./ 当前目录
input_dir=$1
output_dir=$1/output
# 检查输入参数是否为空
if [ -z "$input_dir" ] || [ -z "$output_dir" ]; then
echo "请输入: $0 <input_directory> <output_directory>"
exit 1
fi
# 如果输出目录不存在,创建该目录
if [ ! -d "$output_dir" ]; then
mkdir -p "$output_dir"
fi
# # 压缩视频函数
# function compress_video {
# echo "正在压缩视频: $1"
# # 使用 ffmpeg 进行压缩
# # ffmpeg -i "$file" -codec:v libx264 -crf 23 -preset medium -codec:a aac -b:a 128k -movflags +faststart "$output_dir/$filename_no_ext.$extension"
# # ffmpeg -i "$file" "$output_dir/$filename_no_ext.$extension", 下面的压缩最厉害
# ffmpeg -i "$file" -codec:v libx264 -crf 28 -preset slow -b:a 64k "$output_dir/$filename_no_ext.$extension"
# }
# # 压缩图片函数
# function compress_image {
# echo "正在压缩图片: $1"
# ffmpeg -i "$1" -vf "scale=iw:ih" "compressed_$1"
# }
# 遍历输入目录中的所有视频文件
for file in "$input_dir"/*
do
if [ -f "$file" ]; then
filename=$(basename -- "$file")
extension="${filename##*.}"
filename_no_ext="${filename%.*}"
if [[ "$file" =~ \.(mp4|avi|mov)$ ]]; then
# 使用 ffmpeg 进行压缩
# ffmpeg -i "$file" -codec:v libx264 -crf 23 -preset medium -codec:a aac -b:a 128k -movflags +faststart "$output_dir/$filename_no_ext.$extension"
# ffmpeg -i "$file" "$output_dir/$filename_no_ext.$extension", 下面的压缩最厉害
ffmpeg -i "$file" -codec:v libx264 -crf 28 -preset slow -b:a 64k "$output_dir/$filename_no_ext.$extension"
echo "压缩完成:$filename"
elif [[ "$extension" =~ ^(jpg|jpeg|png)$ ]]; then
# 处理图片文件
# 做你想要的图片处理操作
# 这里只是简单的复制到输出目录
# cp "$file" "$output_dir/$filename"
# -vf "scale=iw:ih"
ffmpeg -i "$file" "$output_dir/$filename_no_ext.$extension"
# base64
base64_image=$(base64 -w 0 "$output_dir/$filename_no_ext.$extension")
echo "data:image/$extension;base64,$base64_image" > "$output_dir/$filename_no_ext.txt"
echo "处理完成:$filename"
fi
fi
done
echo "所有视频文件压缩完成!"
# 保持窗口存在的方式
# read -p "Press any key to continue"
# sleep 60 # 等待60秒后关闭窗口
# exec bash # 启用一个新的进程替代当前
这里命名为ys.sh 简短一些输入比较快
shell 相关命令
www.runoob.com/linux/linux…
这里有个前提就是需要 电脑已经安装了ffmpeg 然后自动化执行批量操作
安装地址
配置相关的环境变量
如果要调节压缩参数, 请参考ffmpeg 的相关参数配置
用法:
-
./ys.sh 'xxx/yyy'后面带的参数,xxx/yyy是指目标目录, 其中的大致视频格式, 以及目录下的图片都会执行批量压缩操作, 统一输出到 当前目录的output/下; 这里注意一下,一定是'./' 开头, 如果直接ys.sh会去全局寻找相关的同名文件 -
如果对转图片
base64不需要的话, 可以注释下面的 生成base64文本操作