基于FFmpeg的视频去重脚本

该脚本利用FFmpeg强大的视频处理能力,实现视频去重、抖动消除、抽帧去除、色调调整、饱和度调整、亮度调整、音调调整、翻转、MD5修改、变速、裁剪大小等操作,并支持任意视频格式和任意分辨率。

使用方法:

  1. 下载FFmpeg,并将其添加到系统环境变量中。
  2. 在命令行中输入以下命令,进入FFmpeg的安装目录:
cd /usr/local/ffmpeg
  1. 将以下代码复制到一个文本编辑器中,并将其保存为一个.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
  1. 在命令行中输入以下命令,运行脚本:
./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是存放临时文件的文件夹路径。

  1. 等待脚本运行完毕,即可得到处理后的视频文件,并且重复视频已被删除。

注意:

  • 该脚本使用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文件夹中。

请根据实际情况修改脚本和命令中的路径。

基于FFmpeg的视频去重脚本:实现抖动消除、抽帧去除、色调调整、翻转等操作

原文地址: https://www.cveoy.top/t/topic/lRDj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录