Обнуление тега ориентации в MP4-видео

При повороте MP4-видео и последующем конвертировании также в формат MP4 возникает проблема, связанная с тем, что некоторые MP4-файлы, снятые на мобильные устройства, могут содержать информацию об ориентации видео, записанную в метатег "Rotation". На момент написания статьи эта информация оставалась в MP4-файлах после физического поворота видео на 90 градусов или на любой угол и сохранения с помощью проигрывателя VLC. При воспроизведении таких файлов некоторые плееры учитывали метатег "Rotation" и еще раз поворачивали уже физически повернутое видео.

В этой статье мы расскажем, как сбросить информацию об ориентации в MP4-видео, чтобы оно одинаково поворачивалось во всех проигрывателях. Также можно физически повернуть видео с одновременным обнулением метатега "Rotation", используя библиотеку FFmpeg.

Метатег "Rotation"

Популярные форматы MP4 и MOV, в которых записывают видео современные устройства (цифровые камеры, телефоны, планшеты и т.п.), могут содержать большое количество метаданных: модель камеры, дата съемки, GPS-координаты и др. Также существует специальный метатег "Rotation", который содержит информацию о том, в каком положении находилось устройство во время съемки видео. Камера считывает данные G-сенсора и на их основании записывает тег "Rotation" в файл с видео. Значение метатега "Rotation" является целым числом и представляет собой угол наклона в градусах. Всего возможно четыре значения тега "Rotation": 0, 90, 180, 270. На картинке ниже представлены возможные положения устройства и соответсвующие им значения.

Соответствие положения телефона значению метатега Rotation в MP4-видео

Современные плееры "понимают" этот метатег и сами поворачивают видео на нужный угол. Но если Вы используете устаревший проигрыватель, видео может отображаться неправильно. В таком случае Вам нужно физически повернуть видео и обнулить тег "Rotation", чтобы все плееры одинаково его показывали.

Бывает еще один распространенный случай: человек включает запись видео, поворачивает телефон и продолжает снимать. В итоге тег ориентации "Rotation" записан некорректно и при просмотре такое видео получается неправильно повернутым.

Универсальным решением, которое рекомендуется в данной статье, является физический поворот видео и обнуление тега "Rotation" в MP4-файле, чтобы старые и новые проигрыватели одинаково воспроизводили повернутое видео.

Если важна только поддержка современных плееров, необязательно конвертировать видео, можно попытаться исправить лишь метаинформацию, отвечающую за ориентацию. Но этот способ мы не рекомендуем. Читайте в разделе ниже "Нюансы работы FFmpeg 4.1".

Обнуление метатега "Rotation" в MP4-видео

Для того чтобы обнулить ориентацию видео, нужно сначала узнать, присутствует ли вообще метатег "Rotation" в видеофайле и какое у него значение.

Просмотр значения метатега "Rotation"

Существует много способов узнать, присутствует ли метатег "Rotation" в видеофайле и какое у него значение. В статье для примера показано, как это сделать в двух бесплатных программах: MediaInfo и ExifTool.

MediaInfo

Скачайте и установите приложение MediaInfo, затем запустите его, выберите команду меню "Файл > Открыть > Файл" вверху окна и в открывшемся проводнике укажите видеофайл на компьютере, метаданные которого нужно посмотреть. Используйте команду меню "Вид > Дерево" для подробного отображения информации о файле в иерархическом виде. В ветке "Видео" найдите элемент "Rotation" и посмотрите его значение. Если пункт "Rotation" отсутствует, считайте, что ориентация видео имеет значение "0".

Просмотр значения метатега Rotation в MP4-файле с помощью программы MediaInfo

ExifTool

Значение метеатега "Rotation" можно также узнать с помощью бесплатного инструмента ExifTool. Кроме видеофайлов ExifTool позволяет просматривать метаданные в фото-, аудио- и других файлах, а также изменять некоторую метаинформацию в них. Программа не имеет графического интерфейса, чтобы просмотреть информацию о файле, перетащите мышкой видеофайл на распакованный исполняемый файл "exiftool(-k).exe" из скачанного архива. Данные отобразятся в окне командной строки Windows.

Просмотр значения метатега Rotation в MP4-файле с помощью программы ExifTool

Инструмент FFmpeg

Так как метатег "Rotation" является композитным, ExifTool не может его редактировать. Поэтому воспользуемся другим инструментом – популярной библиотекой FFmpeg. Это мощный инструмент по обработке видео. FFmpeg умеет конвертировать видеофайлы и изменять их метаданные.

Перед тем как приступить, отметим, что FFmpeg, также как и ExifTool, не имеет графического интерфейса, т.е. с программой необходимо работать через командную строку Windows.

Скачивание FFmpeg

Скачайте вариант FFmpeg для Вашей операционной системы. Для Windows перейдите в раздел "Download" на официальном сайте ffmpeg.org, в разделе "Get the packages", нажмите по ссылке "Windows builds". Вы будете перенаправлены на страницу билдов (сборок) программы. В списках настроек сконфигурируйте билд для скачивания и нажмите кнопку "Download". Например, с настройками, как на картинке ниже, Вы скачаете стабильную сборку (на момент написания статьи Version: 4.1) для 64-разрядной архитектуры процессора (Architecture: Windows 64-bit) с зависимыми компонентами в едином файле (Linking: Static).

Выбор сборки FFmpeg для скачивания

Распаковка FFmpeg

Распакуйте исполняемый файл "ffmpeg.exe", который находится в подпапке "ffmpeg-X.X-XXXXX-XXXXXX\bin" скачанного архива (часть имени X.X-XXXXX-XXXXXX зависит от скачанной сборки), в папку с видеофайлами, ориентацию которых нужно обнулить.

Обнуление метатега "Rotation" с помощью FFmpeg

Запустите окно командной строки в папке с FFmpeg и видеофайлами. В Windows 10 с обновлением ниже 1703 это можно было сделать, нажав правой кнопкой мыши с одновременно зажатой клавишей "Shift" в свободном месте проводника Windows с открытой папкой и выбрав пункт контекстного меню "Открыть окно команд". Начиная с обновления 1703 этот пункт исчез из контекстного меню, но запустить окно командной строки можно другим способом: наберите в строке пути проводника Windows команду "cmd" и нажмите клавишу "Enter".

Откроется окно командной строки Windows с прописанным путем, указывающим на папку с файлом "ffmpeg.exe" и видеофайлами, ориентацию которых нужно обнулить.

Окно командной строки с путем к текущей папке

Наберите команду ниже и нажмите Enter ("input.mp4" измените на имя видеофайла, ориентацию которого нужно обнулить).

ffmpeg -i input.mp4 -codec copy -map_metadata 0 -metadata:s:v:0 rotate=0 output.mp4

Давайте разберем, что означают части данной команды:

  • ffmpeg – вызов исполняемого файла "ffmpeg.exe" (должен присутствовать в папке вместе с видеофайлами);
  • -i input.mp4 – имя файла-источника (например, "input.mp4");
  • -codec copy – не конвертировать видео, а просто скопировать содержимое;
  • -map_metadata 0 – сохранить метаданные источника в конечном файле;
  • -metadata:s:v:0 rotate=0 – установить значение метатега "Rotation" в 0 градусов;
  • output.mp4 – задайте желаемое имя конечного файла.

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

Команда обнуления метатега Rotation в MP4-файле с помощью программы FFmpeg

После выполнения данной команды видео с обнуленным тегом "Rotation" будет скопировано в новый файл с именем, которое Вы указали последним параметром команды.

Нюансы работы FFmpeg 4.1

Наверное, Вы уже догадались, что если в команде выше установить параметру "rotate" одно из возможных значений тега "Rotation" (0, 90, 180, 270), то можно изменить ориентацию видео без необходимости конвертирования и теоретически все современные плееры должны его повернуть на указанное значение. Но мы не рекомендуем этого делать (по крайней мере с помощью FFmpeg версии 4.1), так как на практике на момент написания статьи получалось не все, как ожидалось. Было обнаружено два бага.

Баг №1

При установке параметра "rotate" в одно из значений 90, 180 или 270 для MP4-файлов с отсутствующим до этого метатегом "Rotation" (т.е. "Rotation" = 0), ориентация не учитывалась встроенными плеерами "Windows Media Player", "Кино и ТВ" и проводником Windows 10 (иконки видеофайлов были неправильно повернуты). В тестах с macOS 10.12 и Android 6.0.1 измененная ориентация видео учитывалась корректно.

Баг №2

При установке параметра "rotate" в значение 90 метатег "Rotation" принимал значение 270, а при значении 270 наоборот – 90.

Предлагаем Вам поиграться с параметром "rotate" в последних версиях FFmpeg, и написать в комментариях к статье, исправлены ли вышеперечисленные баги.

Оцените статью: Ужасная!ПлохаяТак себеХорошаяОтличная! 5,00 из 5 (голосов: 5)
Опубликовано в Windows

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

* Представьтесь, пожалуйста! Авторизуйтесь через:

Подписаться на новости