Skip to content

pixfid/video_validator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

Video Validator

Bash скрипт для проверки валидности видео файлов с помощью ffmpeg. Поддерживает рекурсивный поиск в директориях и корректно обрабатывает имена файлов с пробелами, специальными символами и эмодзи.

🚀 Возможности

  • Быстрая проверка - проверяет только заголовки видео файлов (по умолчанию)
  • Полная проверка - тщательная проверка всего файла
  • Рекурсивный поиск - сканирует все подпапки
  • Поддержка Unicode - корректно работает с эмодзи и специальными символами в именах файлов
  • Автоматическое перемещение - перемещает поврежденные файлы в папку broken
  • Цветной вывод - для лучшей читаемости результатов
  • Логирование - сохранение результатов в файл
  • Множественные форматы - поддержка популярных видео форматов

📋 Требования

  • ffmpeg - должен быть установлен и доступен в PATH
  • bash - версия 4.0 или выше
  • GNU утилиты - find, grep, mv

Установка ffmpeg

Ubuntu/Debian:

sudo apt update
sudo apt install ffmpeg

macOS:

brew install ffmpeg

CentOS/RHEL:

sudo yum install epel-release
sudo yum install ffmpeg

🛠 Установка

  1. Скачайте скрипт:
wget https://raw.githubusercontent.com/pixfid/video_validator/refs/heads/main/video_validator.sh
# или
curl -O https://raw.githubusercontent.com/pixfid/video_validator/refs/heads/main/video_validator.sh
  1. Сделайте файл исполняемым:
chmod +x video_validator.sh
  1. (Опционально) Переместите в PATH:
sudo mv video_validator.sh /usr/local/bin/video_validator

📖 Использование

Основные команды

# Простая проверка текущей директории
./video_validator.sh

# Проверка конкретной директории
./video_validator.sh /path/to/videos

# Быстрая справка
./video_validator.sh --help

Расширенные опции

# Полная проверка файлов (медленнее, но тщательнее)
./video_validator.sh --full /path/to/videos

# Перемещение поврежденных файлов в папку broken
./video_validator.sh --move /path/to/videos

# Сохранение результатов в файл
./video_validator.sh -o results.log /path/to/videos

# Проверка только определенных форматов
./video_validator.sh -e "mp4,avi,mkv" /path/to/videos

# Комбинирование опций
./video_validator.sh --full --move -o full_check.log -e "mp4,avi" /path/to/videos

⚙️ Параметры

Параметр Короткий Описание
--help -h Показать справку
--ext -e Расширения файлов для проверки
--output -o Файл для сохранения результатов
--full -f Полная проверка файла
--move -m Перемещать поврежденные файлы

Поддерживаемые форматы (по умолчанию)

  • mp4 - MPEG-4 Part 14
  • avi - Audio Video Interleave
  • mkv - Matroska Video
  • mov - QuickTime Movie
  • wmv - Windows Media Video
  • flv - Flash Video
  • webm - WebM
  • m4v - iTunes Video
  • 3gp - 3GPP

📊 Результаты проверки

Скрипт выводит один из трех статусов для каждого файла:

  • 🟢 ВАЛИДЕН - файл полностью корректен
  • 🟡 ПРЕДУПРЕЖДЕНИЕ - файл проигрывается, но есть небольшие проблемы
  • 🔴 ПОВРЕЖДЕН - файл не может быть обработан

Пример вывода

Поиск видео файлов...
Создана папка для поврежденных файлов: /path/to/videos/broken
Найдено файлов: 150
Режим: быстрая проверка заголовков
Поврежденные файлы будут перемещены в: /path/to/videos/broken

ВАЛИДЕН: /path/to/videos/movie1.mp4
ВАЛИДЕН: /path/to/videos/vacation 🏖️ 2023.avi
ПОВРЕЖДЕН: /path/to/videos/corrupted_file.mkv
ПЕРЕМЕЩЕН: corrupted_file.mkv -> broken/
ПРЕДУПРЕЖДЕНИЕ: /path/to/videos/video_with_issues.mp4

🏃‍♂️ Режимы работы

Быстрая проверка (по умолчанию)

Проверяет только заголовок и первые 0.1 секунды видео файла:

  • Быстро - обработка больших файлов за секунды
  • 🎯 Эффективно - выявляет большинство проблем
  • 💾 Экономно - минимальная нагрузка на диск
./video_validator.sh /path/to/videos

Полная проверка

Проверяет весь файл целиком:

  • 🔍 Тщательно - максимальная точность
  • ⏱️ Медленно - требует больше времени
  • 💯 Надежно - выявляет все проблемы
./video_validator.sh --full /path/to/videos

📁 Управление поврежденными файлами

При использовании опции --move:

  1. Автоматически создается папка broken в корне сканируемой директории
  2. Поврежденные файлы перемещаются в эту папку
  3. Папка broken исключается из последующих проверок
  4. Выводится статус перемещения каждого файла
./video_validator.sh --move /path/to/videos

Структура после обработки:

/path/to/videos/
├── good_video1.mp4
├── good_video2.avi
└── broken/
    ├── corrupted1.mkv
    └── damaged2.mp4

📝 Логирование

Результаты можно сохранить в файл без цветовых кодов:

# Сохранение в файл
./video_validator.sh -o check_results.log /path/to/videos

# Просмотр результатов
cat check_results.log

Пример содержимого лог-файла:

ВАЛИДЕН: /path/to/videos/movie1.mp4
ПОВРЕЖДЕН: /path/to/videos/broken.avi
ПРЕДУПРЕЖДЕНИЕ: /path/to/videos/issues.mkv

🔧 Примеры использования

Проверка домашней коллекции видео

# Быстрая проверка с перемещением поврежденных
./video_validator.sh --move ~/Videos/

# Полная проверка с логированием
./video_validator.sh --full -o ~/video_check.log ~/Videos/

Проверка рабочих файлов

# Только файлы mp4 и avi
./video_validator.sh -e "mp4,avi" /work/video_projects/

# Тщательная проверка перед архивированием
./video_validator.sh --full --move -o archive_check.log /archive/videos/

Массовая проверка

# Проверка нескольких директорий
for dir in /media/disk1 /media/disk2 /media/disk3; do
    ./video_validator.sh --move -o "check_$(basename $dir).log" "$dir"
done

⚠️ Особенности и ограничения

Поддержка имен файлов

Поддерживается:

  • Пробелы: My Video File.mp4
  • Специальные символы: Video [1080p] (2023).mkv
  • Эмодзи: Vacation 🏖️ Summer 2023.mp4
  • Unicode: Фильм о путешествии.avi

Производительность

  • Быстрая проверка: ~1-5 секунд на файл
  • Полная проверка: время зависит от размера файла
  • Рекомендация: используйте быструю проверку для первичного сканирования

Ограничения

  • Требует установленный ffmpeg
  • Не проверяет содержимое на предмет качества видео/аудио
  • Не восстанавливает поврежденные файлы

🐛 Устранение проблем

ffmpeg не найден

# Проверьте установку
which ffmpeg

# Если не установлен
sudo apt install ffmpeg  # Ubuntu/Debian
brew install ffmpeg      # macOS

Ошибки с именами файлов

Скрипт автоматически обрабатывает сложные имена файлов, но если возникают проблемы:

# Установите правильную локаль
export LC_ALL=C.UTF-8
export LANG=C.UTF-8

Проблемы с правами доступа

# Дайте права на запись для перемещения файлов
chmod u+w /path/to/videos/

🤝 Вклад в проект

Предложения по улучшению приветствуются! Создавайте issues или pull requests.

Идеи для развития

  • Поддержка конфигурационных файлов
  • Параллельная обработка файлов
  • Автоматическое восстановление некоторых типов повреждений

📄 Лицензия

MIT License - используйте свободно в личных и коммерческих проектах.

📞 Поддержка

При возникновении вопросов:

  1. Проверьте документацию выше
  2. Убедитесь, что ffmpeg установлен корректно
  3. Создайте issue с описанием проблемы

Автор: 0xcffaedfe
Версия: 1.0
Последнее обновление: Август 2025

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages