bash - 递归列出目录中所有文件的视频时长

标签 bash shell video ffmpeg

我想列出文件夹中每个视频的所有文件名和持续时间。目前我只能单独定位文件:

ffmpeg -i intro_vid001.mp4 2>&1 | grep 持续时间

有人可以建议我如何在终端中将其打印出来或将其打印到文件夹中每个视频文件的文本文件中吗?

我尝试过使用 shell 脚本,但对 shell 脚本非常陌生。

if [ -z $1 ];then echo Give target directory; exit 0;fi

find "$1" -depth -name ‘*’ | while read file ; do
directory=$(dirname "$file")
oldfilename=$(basename "$file")


echo oldfilename
#ffmpeg -i $directory/$oldfilename” -ab 320k “$directory/$newfilename.mp3″ </dev/null
ffmpeg -i "$directory/$oldfilename" 2>&1 | grep Duration | echo
#rm “$directory/$oldfilename”

done

最佳答案

  • 我在一个“旧文件名”前忘记了一美元
  • grep 在其标准输出上写入,您不能使用不使用其标准输入的 echo 进行管道传输。

  • 我建议使用以下脚本:
    find "$1" -type f | while read videoPath ; do
        videoFile=$(basename "$videoPath")
        duration=$(ffmpeg -i "$videoPath" 2>&1 | grep Duration)
    
        echo "$videoFile: $duration"
    done
    

    关于bash - 递归列出目录中所有文件的视频时长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25403621/

    相关文章:

    linux - 使用 cat 命令作为编辑器时出现权限错误

    ios - 通过 Swift 3 流式传输视频

    video - 如何使用 NVidia NVEnc 硬件编码器通过 UDP 流式传输 H.264 视频?

    linux - bash 使用 grep 时 if 语句出现语法错误

    Linux - 仅翻转最后一行,使用 awk

    macos - 操作系统 : tree -I command error opening dir

    shell - pexpect - 通过 ssh 运行 script.sh

    php - 我的网站下载 MP4 而不是播放它们

    bash - 通过 Fly CLI 传递私钥

    Linux:运行命令时如何显示消息?