MediaInfo
mediainfo --Inform="Video;%Codec%" video.mkv
вернется ли мой случай:
V_MPEG4/ISO/AVC
Ответ стал возможен благодаря
Как узнать длительность видеофайла с использованием mediainfo в секундах или других форматах?
ffprobe (ffmpeg) простой способ
Предполагается, что ваше видео имеет только один видеопоток:
ffprobe -v error -select_streams v:0 -show_entries stream=codec_name \
-of default=noprint_wrappers=1:nokey=1 video.mkv
В моем случае вернется:
h264
Ответ стал возможен благодаря Как узнать продолжительность видео в секундах?
ffprobe (ffmpeg) грязный путь
Этот метод проще для понимания, но грязный.
Чтобы получить информацию о кодеке без воспроизведения файла, используйте ffprobe
.
$ ffprobe video.mkv
[...]
Input #0, matroska,webm, from 'video.mkv':
Metadata:
ENCODER : Lavf56.25.101
Duration: 00:28:05.15, start: 0.000000, bitrate: 4353 kb/s
Stream #0:0: Video: h264 (High 4:4:4 Predictive), yuv444p, 1280x960, SAR 1:1 DAR 4:3, 29.97 fps, 29.97 tbr, 1k tbn, 59.94 tbc (default)
Metadata:
ENCODER : Lavc56.26.100 libx264
Stream #0:1: Audio: vorbis, 48000 Hz, stereo, fltp (default)
Metadata:
ENCODER : Lavc56.26.100 libvorbis
Чтобы извлечь информацию о видеокодеке - поскольку ffmpeg отправляет информацию в stderr - pipe и grep:
$ ffprobe video.mkv 2>&1 >/dev/null | grep Stream.*Video
Stream #0:0: Video: h264 (High 4:4:4 Predictive), yuv444p, 1280x960, SAR 1:1 DAR 4:3, 29.97 fps, 29.97 tbr, 1k tbn, 59.94 tbc (default)
Чтобы еще больше уменьшить это, введите sed:
$ ffprobe video.mkv 2>&1 >/dev/null |grep Stream.*Video | sed -e 's/.*Video: //' -e 's/[, ].*//'
h264