基于FFmpeg的视频去重脚本:实现抖动消除、抽帧去除、色调调整、翻转等操作
基于FFmpeg的视频去重脚本
该脚本利用FFmpeg强大的视频处理能力,实现视频去重、抖动消除、抽帧去除、色调调整、饱和度调整、亮度调整、音调调整、翻转、MD5修改、变速、裁剪大小等操作,并支持任意视频格式和任意分辨率。
使用方法:
- 下载FFmpeg,并将其添加到系统环境变量中。
- 在命令行中输入以下命令,进入FFmpeg的安装目录:
cd /usr/local/ffmpeg
- 将以下代码复制到一个文本编辑器中,并将其保存为一个.sh文件:
#!/bin/sh
# 定义变量
input_dir=$1
output_dir=$2
temp_dir=$3
# 创建临时目录
mkdir -p $temp_dir
# 遍历所有视频文件
for file in $(find $input_dir -type f -name '*.mp4' -or -name '*.avi' -or -name '*.mkv' -or -name '*.mov' -or -name '*.flv' -or -name '*.wmv' -or -name '*.webm' -or -name '*.mpg' -or -name '*.mpeg' -or -name '*.ts' -or -name '*.m2ts' -or -name '*.vob' -or -name '*.3gp' -or -name '*.f4v' -or -name '*.rmvb' -or -name '*.ogv' -or -name '*.mp3' -or -name '*.wav' -or -name '*.aac' -or -name '*.wma' -or -name '*.flac' -or -name '*.ape' -or -name '*.m4a' -or -name '*.ogg' -or -name '*.opus')
do
# 获取文件名和扩展名
filename=$(basename -- "$file")
extension="${filename##*.}"
filename="${filename%.*}"
# 生成临时文件名
temp_file="$temp_dir/$filename-temp.$extension"
# 将视频裁剪为1280x720分辨率
ffmpeg -i "$file" -vf scale=1280:720 -c:a copy "$temp_file"
# 去除视频抖动
ffmpeg -i "$temp_file" -vf deshake "$temp_file"
# 去除视频抽帧
ffmpeg -i "$temp_file" -vf mpdecimate "$temp_file"
# 调整视频色调、饱和度和亮度
ffmpeg -i "$temp_file" -vf eq=saturation=1.5:brightness=0.1:contrast=1.1 "$temp_file"
# 调整音调
ffmpeg -i "$temp_file" -af atempo=1.1 "$temp_file"
# 翻转视频
ffmpeg -i "$temp_file" -vf 'transpose=2' "$temp_file"
# 修改视频MD5值
ffmpeg -i "$temp_file" -metadata comment="MD5HASH=$(md5sum "$temp_file" | awk '{print $1}')" -codec copy "$temp_file"
# 变速视频
ffmpeg -i "$temp_file" -filter:v "setpts=0.5*PTS" -filter:a "atempo=2.0" "$temp_file"
# 将视频裁剪为720x480分辨率
ffmpeg -i "$temp_file" -vf crop=720:480 "$temp_file"
# 将视频复制到输出目录中
cp "$temp_file" "$output_dir"
# 删除临时文件
rm "$temp_file"
done
# 查找重复视频,并删除
fdupes -r -d -N $output_dir
# 删除临时目录
rm -r $temp_dir
- 在命令行中输入以下命令,运行脚本:
./perfect_dedup.sh /path/to/input/dir /path/to/output/dir /path/to/temp/dir
其中,/path/to/input/dir是要处理的视频文件夹路径,/path/to/output/dir是处理后的视频文件夹路径,/path/to/temp/dir是存放临时文件的文件夹路径。
- 等待脚本运行完毕,即可得到处理后的视频文件,并且重复视频已被删除。
注意:
- 该脚本使用fdupes命令查找重复文件,请确保已安装fdupes命令。
- 该脚本仅处理常见的视频格式,如果您的视频格式不在列表中,请修改脚本中的文件扩展名列表。
- 该脚本会修改视频的MD5值,以确保每个视频文件都是唯一的。
- 该脚本会删除所有重复的视频文件,请确保您已备份重要文件。
- 该脚本仅供参考,请根据您的实际需求进行修改。
功能说明:
- 抖动消除: 使用deshake滤镜去除视频中的抖动。
- 抽帧去除: 使用mpdecimate滤镜去除视频中的抽帧。
- 色调调整: 使用eq滤镜调整视频的色调、饱和度和亮度。
- 音调调整: 使用atempo滤镜调整视频的音调。
- 翻转视频: 使用transpose滤镜翻转视频。
- MD5修改: 使用metadata命令修改视频的MD5值。
- 变速视频: 使用setpts和atempo滤镜改变视频的速度。
- 裁剪大小: 使用scale和crop滤镜裁剪视频的大小。
使用示例:
./perfect_dedup.sh /home/user/videos /home/user/processed_videos /home/user/temp
该命令将处理/home/user/videos文件夹中的所有视频文件,并将处理后的视频文件保存到/home/user/processed_videos文件夹中,临时文件将保存到/home/user/temp文件夹中。
请根据实际情况修改脚本和命令中的路径。
原文地址: https://www.cveoy.top/t/topic/lRDj 著作权归作者所有。请勿转载和采集!