如何找到未使用特定编解码器编码的媒体文件?

Eld*_*eek 2 video codecs find

我想在特定的视频编解码器(例如 x265 高效视频编解码器)上标准化我的视频收藏。我知道我可以使用例如“mediainfo filename |”从单个文件获取正在使用的编解码器。grep "Codec ID"' 这将输出每个文件的视频编解码器,后跟音频编解码器,例如:

Codec ID                                 : V_VP8
Codec ID                                 : A_VORBIS
Run Code Online (Sandbox Code Playgroud)

我已经审查过man find,但我似乎不知道如何实现这一点。有任何想法吗?

jfs*_*jfs 6

find, ffprobe,实用程序的组合jq可用于打印有关未使用视频编解码器编码的所有*.avi,文件(递归地在当前目录树中)的信息:*.mp4"h264"

$ find -name \*.avi -o -name \*.mp4 \
    -exec ffprobe -v quiet -show_streams -show_format -of json {} \; |
  jq -c '.format.filename as $path |
         .streams[]? |
         select(.codec_type=="video" and .codec_name!="h264") |
         {codec: .codec_name, path: $path}'
Run Code Online (Sandbox Code Playgroud)

要安装实用程序,请运行:

$ sudo apt-get install ffmpeg jq findutils
Run Code Online (Sandbox Code Playgroud)

该示例适用于jq 1.4. 如果apt-get版本提供旧版本;您可以下载更新的jq二进制文件(只需将下载的文件放在 中的某个位置$PATH,将其重命名为jq并使其可执行chmod +x jq:)