Видео 4:3 имеет разрешение 720x480.

Я пытался сделать некоторые видео редактирования и кодирования. У меня есть так называемое SD-видео, которое якобы должно быть в 4:3соотношении сторон. Но вместо 640x480, это 720x480. Интересно, когда я играю в нее с помощью медиаплеера, я вижу, 640x480что она не воспроизводится как 720x480!

Что происходит?! Как это возможно?

Ответы (2)

Есть 2 разные вещи:

  • Реальная ширина и высота кадров (в пикселях) — см. зеленую часть следующего рисунка.
  • Отображаемые ширина и высота ( во время воспроизведения) – см. синюю часть той же картинки.

Проблема возникла в старые недобрые времена, когда разрешение устройств (количество пикселей в изображении) было очень низким, а необходимое соотношение ширины к высокому для воспроизведения было 4:3.

Решением (в те времена) было изобретение неквадратных пикселей.


Для простоты предположим (теоретически) очень низкие размеры:

  • требуется: 4×3 пикселя (т.е. 12 пикселов) на кадр.
  • реально возможно (за приемлемую цену): 3х3 (т.е. 9 пикселей).

Решением были неквадратные пиксели с соотношением сторон пикселя ( PAR ) 4:3 , как здесь:

введите описание изображения здесь

Таким образом, соотношение сторон пикселя ( PAR ) — это соотношение размеров каждого отдельного пикселя:

Каждый синий пиксель на нашем изображении имеет PAR 4:3, а каждый оранжевый и каждый зеленый — PAR 1:1.

Теперь все наше (синее) изображение отображается правильно, как мы и хотели — например, как 12 см x 9 см — поэтому его соотношение сторон экрана ( DAR ) составляет 12: 9 или 4: 3.

Несмотря на это, он сохраняется как 3 × 3 пикселя, поэтому соотношение сторон при хранении ( SAR ) составляет 3 пикселя: 3 пикселя или 1:1.

Намекать:

  • соотношение сторон пикселя ( PAR ) составляет микрометры : микрометры
  • Соотношение сторон экрана ( DAR ) равно сантиметрам: сантиметрам.
  • Соотношение сторон хранения ( SAR ) равно пикселям: пикселям.

Следовательно, соотношение между этими тремя значениями равно

              ДАР = САР × ПАР.

Важное примечание:

Иногда PAR (Pixel Aspect Ratio) называют Sample Aspect Ratio — как в FFmpeg *. К сожалению, аббревиатура для него тогда SAR , что очень сбивает с толку, потому что, как мы видели, это также аббревиатура для соотношения сторон хранения.


Главная проблема:

В настоящее время все устройства имеют соотношение сторон пикселя 1:1 (квадратные пиксели), и многие медиаплееры, в основном для небольших устройств (мобильные телефоны, планшеты), полагаются на него, полностью игнорируя значение DAR, хранящееся в видеопотоках .

Так что вы можете столкнуться с ситуацией, когда одно и то же видео (сделанное из всех источников) корректно воспроизводится на вашем стационарном или портативном компьютере, но некорректно (суженно) на вашем смартфоне. Или даже на другом медиаплеере на том же компьютере или устройстве.

В нашем примере кадры могут неправильно отображаться в виде квадрата (см. зеленую часть изображения выше).


Решение этой проблемы в FFmpeg:

  • измените размер проблемного видео, затем
  • установите SAR на 1 и
  • DAR , скорее всего, имеет правильное значение, но вы можете установить его, чтобы быть уверенным.

В нашем (нереальном) примере вы можете использовать filtergraph

-vf scale=4:3,setsar=1,setdar=w/h

где w- ширина (только что отмасштабированных) кадров в пикселях, h- их высота. FFmpeg автоматически заменит соответствующие значения.

Результатом будет оранжевая часть изображения выше.


В вашем случае ваше видео имеет (из вашей информации)

  • ДАР 4:3 (640:480),
  • SAR (соотношение сторон хранения) 720:480 = 3:2 и, следовательно,
  • ПАР = ДАР / САР = 8:9. (В терминологии FFmpeg это **SAR — Sample Aspect Ratio).

Таким образом, чтобы избежать проблем с медиаплеерами, игнорирующими значение DAR (и воспроизводящими его в пропорции 720:480, вы можете преобразовать его с помощью команды

ffmpeg -i your_input_file -vf -scale=640:480,setsar=1 -c:a copy your_output_file

Проблемы с картинками с неквадратными пикселями:

С картинками дело обстоит еще хуже:

Почти все средства просмотра/редакторы изображений и интернет-браузеры просто игнорируют изображения SAR и DAR , предполагая, что все изображения в мире имеют SAR 1:1.

Почетным исключением является (что интересно и достаточно неожиданно) Microsoft Windows Photo Viewer, который корректно отображает все картинки.

Убедиться в этом можно, например, с помощью The Pixel Aspect Ratio Acid Test — все 9 картинок должны правильно отображаться в вашем браузере, но, скорее всего, это не так.

хорошо описано. Спасибо! Оба правильны. Как только количество повторений станет выше, будет обновлен лучший ответ.

525/60 оцифрованное SD-видео в соответствии с Rec. 601 действительно имеет ширину 720 пикселей и высоту 480 пикселей, включая некоторые пробелы по бокам. Цифровой эквивалент 625/50 — 720x576. В обоих случаях соотношение сторон кадра составляет 4:3, это просто означает, что пиксели не квадратные. См. https://en.wikipedia.org/wiki/D-1_(Sony)

Чтобы усложнить ситуацию, только часть кадра имеет пропорции 4:3. По-моему, только 704х480 (для 525/60) и 704х576 (для 625/50) имеют пропорции 4:3. Смотрите обсуждение здесь: https://lurkertech.com/lg/video-systems/

Итак, 480 пикселей имеют пропорцию 10/11, 576 пикселей — пропорцию 59/54. Также см. здесь: https://en.wikipedia.org/wiki/Pixel_aspect_ratio И не забывайте, что форматы 480 и 576 строк также могут быть широкоэкранными (16:9), но с одинаковым количеством пикселей в строке. ! Кроме того, с такими числами, как 59/54, работать непросто. Все это привело к тому, что для 576-строчного формата было выбрано соотношение сторон пикселя 12/11 для соотношения сторон экрана 4:3 и 16/11 для соотношения сторон 16:9.

Квадратные пиксели стали нормой, начиная с видеоадаптера VGA, а затем и со спецификациями HD для 720-строчного и 1080-строчного видео. Кстати, есть некоторые форматы HD, которые записывают 1440x1080 или 960x720, но имеют соотношение сторон кадра 16:9, а также имеют неквадратные пиксели. Квадратные пиксели появились относительно недавно, и их не следует ожидать автоматически.

Спасибо за описание. Я играю с FFmpegнекоторыми экспериментами (чтобы увидеть, имеют ли они одинаковую длину сцены). Итак, поскольку воспроизведение одинаковое, я должен предположить ffmpeg, что 640x480 и 720x480 идентичны?!
ffmpeg (не ffplay) никогда не масштабирует видео до соотношения сторон дисплея, поэтому фильтры и кодировщики будут работать только с растровыми данными, которые в вашем случае составляют 720x480.
неквадратные пиксели, вероятно, потребуют от вас повторной выборки видео, худшего вида транскодирования, известного человечеству, чтобы исправить это.