Проблемы с поиском решения этой проблемы. У меня есть папка с несколькими тысячами фильмов, и, возможно, 20-30 повреждены. Я пытаюсь найти способ перечислить эти поврежденные файлы (НЕ удаляю их). Они названы красиво, и все расположены в одном каталоге (/media/NS02/Movies/*)
Я обнаружил, что XBMC не может найти информацию о качестве этих файлов, и попытался сбросить список поврежденных безрезультатно. Я также пытался использовать mediainfo. Мне особенно интересен этот подход, так как я также хотел бы напечатать список видео, которые не являются 720P (отдельно).
Видео файлы MKV, MP4 и AVI. Я не особо переживаю за качество AVI. Как я мог достичь этого? Я предпочитаю подходы CLI.
Я не уверен в поведении поврежденных видеофайлов. Я просто дам предложения о возможном поведении.
Эти файлы не будут воспроизводиться вообще? Или произойдет сбой воспроизведения где-нибудь в середине фильма?
Если это первый, вы можете попробовать mplayer -vo null -ao null
для файла, убедитесь, что mplayer не завершает работу в течение первых 2-3 секунд Убей mplayer и переходи к следующему. Должно быть достаточно простым для написания сценариев и не должно занимать более часа для 1000 фильмов.
Если это последнее, снова есть две возможности.
Случай 1 можно обработать, открыв файл с помощью echo 'seek 95 1' | mplayer -vo null -ao null -slave
и проверив, падает ли mplayer. Эта команда просто открывает файл и пытается найти 95% времени.
Случай 2 означает, что сбой не может быть обнаружен при просмотре любой точки файла, кроме точки сбоя. Таким образом, единственный способ сделать это - декодировать весь файл и посмотреть, не удастся ли декодировать в какой-то момент. Есть способы декодировать файлы быстрее, чем воспроизведение в реальном времени, но все же я ожидаю, что этот процесс будет продолжаться в течение нескольких дней, возможно, месяцев. Вам решать, стоит ли обнаруживать 20-30 поврежденных файлов среди нескольких тысяч действительно больших усилий.
Обнаружение видео, отличного от 720p:
mplayer file.extn -frames 0 -vo null -ao null 2> /dev/null | grep VIDEO | awk '{ print $3 }'
печатает разрешение видео. Вы можете использовать это для создания необходимого списка.