【问题标题】:Recursively scan and identify video files with FFMPEG使用 FFMPEG 递归扫描和识别视频文件
【发布时间】:2021-05-30 04:00:07
【问题描述】:

更新

感谢大家分享您的建议。通过如下修改,我能够正常工作。

#!/bin/bash

ROOTPATH="/Volumes/NVME-RAID/ASSET-Processing/CORRUPT-SCAN/SCAN " # manually define root  path to your folder that has subfolders
for subdir in *; do
  cd ${ROOTPATH}${subdir} 
  mkdir 00errors
  
  for path in *.{MOV,mov,MP4,mp4}; do

    ffmpeg -i "${path}" -f null -; echo$?
    RC=$?

    if [ "${RC}" -ne "0" ]; then
        # Do something to handle the error.
        mv ${path} ./00errors
    fi

  done
  cd ../
done

我现在唯一的问题是它似乎没有遍历子文件夹。据我了解,它应该在每个子文件夹中创建一个“00errors”文件夹,并在该子文件夹中移动错误文件。

正在尝试筛选 14TB 的恢复视频...

我正在尝试弄清楚如何正确转换此脚本,以便它可以在 bash/MacOS 上运行。由于 MacOS 不使用 /mnt

#!/bin/bash

ROOTPATH="/mnt/f/00test/" # manually define root  path to your folder that has subfolders
for subdir in *; do
  cd ${ROOTPATH}${subdir} 
  mkdir 00errors
  
  for path in *.mp4; do

    ffmpeg error -i "${path}"
    RC=$?

    if [ "${RC}" -ne "0" ]; then
        # Do something to handle the error.
        mv ${path} ./00errors
    fi

  done
  cd ../
done

参考Quickly check the integrity of video files inside a directory with ffmpeg

【问题讨论】:

  • 将 ROOTPATH 替换为视频的位置。它们在外部驱动器上吗?如果是这样,它将是/Volumes/EXTERNALDRIVENAME
  • 如果ROOTPATH 变量为空,您可以添加测试,使用参数扩展来使用替代值或通过内置read 交互询问。也可以试试shellcheck.net 只是我的两分钱
  • 您的 ffmpeg 命令无效,会报错:Unable to find a suitable output format for 'error'. error: Invalid argument。您忘记了-v,如-v error。一些有效的命令见How can I tell if a video file is corrupted? FFmpeg?

标签: bash ffmpeg


【解决方案1】:

如果您的测试目录位于您的主目录 /Users/username aka ~

ROOTPATH="~/00test" # manually define ROOTPATH to your folder that has subfolders
for subdir in *; do
  cd ${ROOTPATH}/${subdir} 

我遵循惯例在路径中不使用斜杠;这里我把斜杠移到了 cd 命令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-20
    • 2023-03-16
    • 1970-01-01
    • 2012-04-02
    • 2010-11-02
    • 1970-01-01
    • 2019-08-07
    • 2013-03-26
    相关资源
    最近更新 更多