按编解码器查找所有视频(而不是按容器格式或 MIME 类型)

按编解码器查找所有视频(而不是按容器格式或 MIME 类型)

如何获取使用所用视频编解码器的所有视频的列表?

我发现了一些有趣的命令,例如媒体信息,ffmpeg或者出口工具但他们仅通过一个视频就提供了很多信息。

我发现的最有趣的命令是文件并给我这个输出:

$ file *
8 Mile (2002).avi:        RIFF (little-endian) data, AVI, 640 x 272, 23.98 fps, video: XviD, audio: MPEG-1 Layer 3 (stereo, 48000 Hz)
1984 (1984).avi:          RIFF (little-endian) data, AVI, 960 x 540, ~24 fps, video: H.264 X.264 or H.264, audio: MPEG-1 Layer 3 (stereo, 48000 Hz)

我想要一个类似这样的输出(例如,接下来仅转换具有 XviD 编解码器的视频):

~/Movies/8 Mile (2002).avi     XviD
~/Movies/1984 (1984).avi       H.264

注意:我在macOS 塞拉利昂(10.12) 但我也可以翻译 Linux 命令

答案1

更新

谢谢@don_crissti指出传递{}sh总是错误 - 修复方法是:

find ~/Movies/ -type f -iname "*.avi" -exec sh -c "echo $1; file $1 | cut -d, -f5 | cut -d: -f2 | sed 's/ //g' | sed 's/X.264orH.264//g'" {} \;

你可以尝试这个 - 未经测试。

find ~/Movies/ -type f -iname "*.avi" -exec sh -c "echo {}; file '{}' | cut -d, -f5 | cut -d: -f2 | sed 's/ //g' | sed 's/X.264orH.264//g'" \;
  • find:搜索所有avi文件~/Movies/
  • echo {}打印文件名
  • file以此运行filename
  • cut -d, -f5获取由 coma(,) 剪切的第 5 个文本字段
  • cut -d: -f2获取用冒号截断的第二个文本字段(:)
  • sed从文本中删除空格和可能重复的 H264 字符串

相关内容