Задать вопрос
Hatsune-Miku
@Hatsune-Miku
Няшк :3

Как определить «качество видео» через ffmpeg?

Даже не знаю как сформулировать вопрос, как через ffmpeg определить качество видео? То есть 720р или 420р и т.д.

То есть я выполняю команду: ffmpeg -i /my-video-file.mp4
Что нужно искать в ответе?

// Сперва увидел там yuv420p - подумал оно, но когда я передавал ffmpeg видео очень плохого качества и маленького разрешения (320x240 что по сути вроде как 144р) он ответил - yuv420p
Я прогуглил, а оказалось это цветовая модель видео :D

p.s я с ffmpeg не очень дружу и с медиа фалйлами не когда не приходилось работать поэтому не нужно кричать на мои неправильные формулировки, но поправить можно)
  • Вопрос задан
  • 5210 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 2
@monah_tuk
ffmpeg -i lightning-timezones.mkv
Guessed Channel Layout for  Input Stream #0.1 : stereo
Input #0, matroska,webm, from 'lightning-timezones.mkv':
  Metadata:
    ENCODER         : Lavf56.15.102
  Duration: 00:02:21.61, start: 0.067000, bitrate: 442 kb/s
    Stream #0:0: Video: h264 (High 4:4:4 Predictive), yuv444p, 1920x1080, SAR 1:1 DAR 16:9, 29.97 fps, 29.97 tbr, 1k tbn, 59.94 tbc (default)
    Metadata:
      ENCODER         : Lavc56.13.100 libx264
    Stream #0:1: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s (default)


конкретно:
Stream #0:0: Video: h264 (High 4:4:4 Predictive), yuv444p, **1920x1080**, SAR 1:1 DAR 16:9, **29.97** fps, 29.97 tbr, 1k tbn, 59.94 tbc (default)


Выделенное **ITEM**, первое разрешение, второе - FPS, DAR - Display Aspect Ratio - соотношение сторон картинки (подробнее про SAR, DAR, PAR: https://en.wikipedia.org/wiki/Pixel_aspect_ratio).

144p это не качество, а кодировка разрешения: 176×144 прогрессивная развёртка. Я могу вам сделать 1080p такого отвратительного вида, что вас тошнить будет от одного воспоминания. Обычно такой вид используется для представления разрешения по низкой стороне, а p или i после - прогрессивная или межстрочная развёртка (прогрессивная - полный кадр, FPS 1:1, межстрочная - в каждом кадре два (в теоретически и больше) полукадра, которые потом хитрыми алгоритмами восстанавливаются до полного кадра, чем увеличивают FPS на выходе в 2 раза). Одно такое кодирование может скрывать несколько разрешений, к примеру: 1080p это и 1920x1080 и 1440x1080, в обоих случаях DAR 16:9, а вот SAR в первом случае 1:1, а во втором 1.33:1. Или 720p, помимо популярного 1280x720 (DAR 16:9, SAR 1:1), это может быть 960x720 при DAR 4:3 и SAR 1:1 или, так же 960x720 при DAR 16:9 и SAR 1.33:1

Забыл написать про ffprobe - используйте его. Если есть ffmpeg, есть и он:
ffprobe -v 0 -select_streams v -print_format flat -show_format -show_streams /home/alexd/thunderbird-timezones-fix.mkv

в качестве параметров "-print_format" можете указывать: flat, json, xml, csv, compact, ini - что вам покажется удобнее. "-select_streams" позволяет выбрать стримы по любому критерию, поддерживаемому ffmpeg: v - video, a - audio, # - по номеру и т.д. Пример выхлопа:
streams.stream.0.index=0
streams.stream.0.codec_name="h264"
streams.stream.0.codec_long_name="H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10"
streams.stream.0.profile="High 4:4:4 Predictive"
streams.stream.0.codec_type="video"
streams.stream.0.codec_time_base="1001/60000"
streams.stream.0.codec_tag_string="[0][0][0][0]"
streams.stream.0.codec_tag="0x0000"
streams.stream.0.width=640
streams.stream.0.height=480
streams.stream.0.coded_width=640
streams.stream.0.coded_height=480
streams.stream.0.has_b_frames=2
streams.stream.0.sample_aspect_ratio="1:1"
streams.stream.0.display_aspect_ratio="4:3"
streams.stream.0.pix_fmt="yuv444p"
streams.stream.0.level=30
streams.stream.0.color_range="N/A"
streams.stream.0.color_space="unknown"
streams.stream.0.color_transfer="unknown"
streams.stream.0.color_primaries="unknown"
streams.stream.0.chroma_location="left"
streams.stream.0.timecode="N/A"
streams.stream.0.refs=4
streams.stream.0.is_avc="1"
streams.stream.0.nal_length_size="4"
streams.stream.0.id="N/A"
streams.stream.0.r_frame_rate="30000/1001"
streams.stream.0.avg_frame_rate="30000/1001"
streams.stream.0.time_base="1/1000"
streams.stream.0.start_pts=67
streams.stream.0.start_time="0.067000"
streams.stream.0.duration_ts="N/A"
streams.stream.0.duration="N/A"
streams.stream.0.bit_rate="N/A"
streams.stream.0.max_bit_rate="N/A"
streams.stream.0.bits_per_raw_sample="8"
streams.stream.0.nb_frames="N/A"
streams.stream.0.nb_read_frames="N/A"
streams.stream.0.nb_read_packets="N/A"
streams.stream.0.disposition.default=1
streams.stream.0.disposition.dub=0
streams.stream.0.disposition.original=0
streams.stream.0.disposition.comment=0
streams.stream.0.disposition.lyrics=0
streams.stream.0.disposition.karaoke=0
streams.stream.0.disposition.forced=0
streams.stream.0.disposition.hearing_impaired=0
streams.stream.0.disposition.visual_impaired=0
streams.stream.0.disposition.clean_effects=0
streams.stream.0.disposition.attached_pic=0
streams.stream.0.tags.ENCODER="Lavc56.13.100 libx264"
format.filename="/home/alexd/thunderbird-timezones-fix.mkv"
format.nb_streams=1
format.nb_programs=0
format.format_name="matroska,webm"
format.format_long_name="Matroska / WebM"
format.start_time="0.067000"
format.duration="84.451000"
format.size="80212"
format.bit_rate="7598"
format.probe_score=100
format.tags.ENCODER="Lavf56.15.102"
Ответ написан
Denormalization
@Denormalization
Проще использовать mediainfo:
mediainfo --Inform="Video;%Width%x%Height%" file.avi
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы