我想在特定的视频编解码器(例如 x265 高效视频编解码器)上标准化我的视频收藏。我知道我可以使用例如“mediainfo filename |”从单个文件中获取正在使用的编解码器。grep "Codec ID"' 它将输出视频编解码器,然后是每个文件的音频编解码器,例如:
Codec ID : V_VP8
Codec ID : A_VORBIS
我已经审查过man find
,但我似乎无法弄清楚如何做到这一点。有任何想法吗?
find
,ffprobe
,实用程序的组合jq
可用于打印有关未使用视频编解码器编码的所有*.avi
,*.mp4
文件(递归地在当前目录树中)的信息:"h264"
要安装实用程序,请运行:
该示例适用于
jq
1.4
. 如果apt-get
版本提供了旧版本;您可以下载一个较新的jq
二进制文件(只需将下载的文件放在某处$PATH
,将其重命名为jq
并使其可执行chmod +x jq
:)。您可以通过以下方式获取工作目录下编解码器特定媒体文件的排序列表
$ 媒体信息 * | grep -v codec_id | grep .file_extension | cut -f2 -d: > list.txt
其中codec_id是相关编解码器(例如 h264),file_extension是相关容器的扩展名(例如 .mkv)
但如果文件名在名称之间有空格,则该命令将无法正常工作。
您可以将这个小 Python 脚本与 find 一起使用来打印具有特定编解码器的所有文件:
filterByCodec.py
这将调用
ffprobe
,将其输出存储在 json 字符串中,遍历所有流并打印输入路径以防编解码器名称和类型匹配。你将需要ffprobe
这个。如果您的系统上没有安装它,您可以从这里获取它作为静态构建。然后你可以
find
像这样在每个文件上调用它:这将打印包含 HEVC 视频编解码器的所有视频。更多示例:
您可以扩展脚本并将这些文件移动到某个目录或其他任何目录中。这可能看起来像这样:
我知道这不是最好的方法,但是使用 python 很简单。