Получение соотношения сторон любого видео - PullRequest
0 голосов
/ 18 февраля 2020

Я хочу получить соотношение сторон видео в формате android, например (1: 1, 9:16 и c). В настоящее время я получаю высоту и ширину видео, но я хочу соотношение сторон. Это возможно с Ffmpeg или MediaMetadataRetriever? Если да, то, пожалуйста, дайте мне пример кода. Если нет, то, пожалуйста, предложите мне другие решения.

Ответы [ 2 ]

3 голосов
/ 18 февраля 2020

ffprobe

$ ffprobe -loglevel error -show_entries stream=sample_aspect_ratio,display_aspect_ratio -of default=nw=1 input.mkv 
  sample_aspect_ratio=115:87
  display_aspect_ratio=1840:783

Это обеспечит как SAR, так и DAR.

mediainfo

$ mediainfo --Output="Video;%DisplayAspectRatio%,%DisplayAspectRatio/String%,%PixelAspectRatio%,%DisplayAspectRatio_Original%,%DisplayAspectRatio_Original/String%" input.mkv 
  2.350,2.35:1,1.322,1.778,16:9

Как показано в этом примере, есть много аспектов rat ios на выбор, и они могут отображаться в нескольких формах, таких как 16: 9 или 1.778.

Для получения дополнительной информации см. mediainfo --Help-Output и mediainfo --Info-Parameters.

0 голосов
/ 18 февраля 2020

Соотношение сторон - это просто отношение высоты к ширине * - так как вы можете получить те, которые, я думаю, то, что вы ищете, это просто способ уменьшить их до минимального соотношения.

Это обычное упражнение по математике - вы делите каждое число на их наибольший общий делитель, который является наибольшим числом, которое разделит на оба числа (https://en.wikipedia.org/wiki/Greatest_common_divisor).

В Java есть хороший пример использования рекурсивного деления на модули, здесь вы можете использовать: { ссылка }

Итак, в итоге вы:

  • получить высоту и ширину (например, 1500, 500)
  • получить их наибольший общий делитель, gcd (500 в этом примере)
  • разделить gcd на оба числа и получить ваш аспект коэффициент - это его самые низкие условия (3: 1 в этом примере)

(*) Обновление. На самом деле очень хороший ответ @ llogan включает в себя как SAR, так и DAR аспект rat ios. Примерное форматное соотношение, SAR, является исходным форматным соотношением источника, а Display Aspect Ratio является форматным соотношением видео, как оно предназначено для отображения. Есть и третий термин, который вы можете иногда видеть, это соотношение сторон в пикселях, которое представляет собой DAR, деленное на SAR. Я подозреваю, что это все еще тот DAR, который вас интересует, поэтому подход к высоте и ширине, который вы использовали, по-прежнему применяется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...