UNIX системы распознают ширину и высоту ПРАВИЛЬНО (607x1080)
Windows распознают ширину и высоту НЕПРАВИЛЬНО (1080x1080)
Вы готовы к этому? И то, и другое правильно, и одно неверно, в зависимости от вашего определения обряда и неверного.
Запустите эту команду: MP4Box -diso -std ezpz-Retargeting-Stories-Tiny-Cup_Spoon.mp4 2>&1 | less
Вы увидите:
<TrackHeaderBox CreationTime="3662746977" ModificationTime="3662746977" TrackID="1" Duration="20020" Width="607.50" Height="1080.00">
и
<AVCSampleEntryBox DataReferenceIndex="1" Width="1080" Height="1080" XDPI="4718592" YDPI="4718592" BitDepth="24">
вы видите, есть кодеки и есть контейнеры. Думайте об этом как письмо и конверт. Конверт может содержать несколько букв внутри. Конверт может иметь адрес снаружи, но когда вы его открываете, письмо имеет другой адрес.
MP4 - конверт, который может содержать несколько букв. Например, он может содержать аудиодорожки, видеодорожки, текстовые дорожки, дорожки данных и т. Д. c. Это отдельные вещи, но они объединены в один файл (конверт).
В этом случае контейнер (mp4 / envelope) сообщает, что разрешение равно 607.5x1080
(TrackHeaderBox
). Но письмо внутри (код c) говорит о том, что разрешение 1080x1080
(AVCSampleEntryBox
). Так что же правильно?
Windows (ПРАВИЛЬНО) распознает ширину и высоту как 1080x1080 (согласно коду c), а UNIX (ПРАВИЛЬНО) распознает ширину и высоту как 607x1080 (согласно контейнеру) ). Разница в том, что ВЫ хотите доверять как источнику истины, когда им предоставляют противоречивую информацию.
В этом конкретном случае c, я лично считаю, что windows более верен, чем Unix в этом декодер - лучший источник правды, чем этап рендеринга.
TLDR. Файл плохой. Исправьте файл так, чтобы код c и контейнер соответствовали. Добро пожаловать на видео на inte rnet!