Моя проблема с этими решениями заключается в том, что, хотя он копирует большую часть метаданных, некоторые части теряются, а размер файла на 700 КБ меньше . Прилагается до и после метаданных из ffprobe и exifer.
Дополнительным странным выводом является то, что команда ffmpeg rotate = 90 выполняет вращение по часовой стрелке, которое в ffprobe составляет (cw) 270 ° в метаданных, но (ccw) 90 ° в сторонних данных displaymatrix.
=ExifTool Version Number : 10.87 *File Name : input.mp4 =Directory : C:/ *File Size : 23 MB *File Modification Date/Time : 2016:10:29 13:10:48+02:00 *File Access Date/Time : 2018:03:22 22:51:11+01:00 *File Creation Date/Time : 2018:03:22 22:51:11+01:00 =File Permissions : rw-rw-rw- =File Type : MP4 =File Type Extension : mp4 =MIME Type : video/mp4 *Major Brand : MP4 Base w/ AVC ext [ISO 14496-12:2005] *Minor Version : 0.0.0 *Compatible Brands : avc1, isom =Movie Header Version : 0 =Create Date : 2016:10:29 12:10:41 =Modify Date : 2016:10:29 12:10:41 *Time Scale : 90000 =Duration : 6.01 s =Preferred Rate : 1 =Preferred Volume : 100.00% =Preview Time : 0 s =Preview Duration : 0 s =Poster Time : 0 s =Selection Time : 0 s =Selection Duration : 0 s =Current Time : 0 s *Next Track ID : 3 -Firmware Version : HD3.11.03.03 -Lens Serial Number : LW13121003000141 -Camera Serial Number Hash : 4833422b363033313530636432356400 =Track Header Version : 0 =Track Create Date : 2016:10:29 12:10:41 =Track Modify Date : 2016:10:29 12:10:41 =Track ID : 1 =Track Duration : 6.01 s =Track Layer : 0 =Track Volume : 0.00% =Image Width : 1920 =Image Height : 1440 =Graphics Mode : srcCopy =Op Color : 0 0 0 =Compressor ID : avc1 =Source Image Width : 1920 =Source Image Height : 1440 =X Resolution : 72 =Y Resolution : 72 -Compressor Name : .GoPro AVC encoder =Bit Depth : 24 -Color Representation : nclc 1 1 1 -Gamma : 2.2 =Video Frame Rate : 47.952 -Matrix Structure : 1 0 0 0 1 0 0 0 1 =Media Header Version : 0 =Media Create Date : 2016:10:29 12:10:41 =Media Modify Date : 2016:10:29 12:10:41 -Media Time Scale : 48000 -Media Duration : 5.99 s *Handler Type : Audio Track -Handler Description : .GoPro AAC -Balance : 0 -Audio Format : mp4a -Audio Channels : 2 -Audio Bits Per Sample : 16 -Audio Sample Rate : 48000 -Movie Data Size : 24045320 -Movie Data Offset : 32768 *Avg Bitrate : 32 Mbps =Image Size : 1920x1440 =Megapixels : 2.8 *Rotation : 0
exiftool output.mp4
=ExifTool Version Number : 10.87 *File Name : output.mp4 =Directory : C:/ *File Size : 22 MB *File Modification Date/Time : 2018:03:23 12:29:19+01:00 *File Access Date/Time : 2018:03:23 12:28:18+01:00 *File Creation Date/Time : 2018:03:23 12:28:18+01:00 =File Permissions : rw-rw-rw- =File Type : MP4 =File Type Extension : mp4 =MIME Type : video/mp4 *Major Brand : MP4 Base Media v1 [IS0 14496-12:2003] *Minor Version : 0.2.0 *Compatible Brands : isom, iso2, avc1, mp41 +Movie Data Size : 23232544 +Movie Data Offset : 48 =Movie Header Version : 0 =Create Date : 2016:10:29 12:10:41 =Modify Date : 2016:10:29 12:10:41 *Time Scale : 1000 =Duration : 6.01 s =Preferred Rate : 1 =Preferred Volume : 100.00% =Preview Time : 0 s =Preview Duration : 0 s =Poster Time : 0 s =Selection Time : 0 s =Selection Duration : 0 s =Current Time : 0 s *Next Track ID : 2 =Track Header Version : 0 =Track Create Date : 2016:10:29 12:10:41 =Track Modify Date : 2016:10:29 12:10:41 =Track ID : 1 =Track Duration : 6.01 s =Track Layer : 0 =Track Volume : 0.00% +Matrix Structure : 0 1 0 -1 0 0 0 0 1 =Image Width : 1920 =Image Height : 1440 =Media Header Version : 0 =Media Create Date : 2016:10:29 12:10:41 =Media Modify Date : 2016:10:29 12:10:41 +Media Time Scale : 720000 +Media Duration : 6.01 s +Media Language Code : eng +Handler Description : VideoHandler =Graphics Mode : srcCopy =Op Color : 0 0 0 =Compressor ID : avc1 =Source Image Width : 1920 =Source Image Height : 1440 =X Resolution : 72 =Y Resolution : 72 =Bit Depth : 24 +Pixel Aspect Ratio : 1:1 =Video Frame Rate : 47.952 *Handler Type : Metadata +Handler Vendor ID : Apple +Encoder : Lavf58.10.100 *Avg Bitrate : 30.9 Mbps =Image Size : 1920x1440 =Megapixels : 2.8 *Rotation : 270
Я сравнил ffmpeg rotate = 0 и rotate = 90 .mp4 файлов в notepad ++, чтобы определить флаг / матрицу поворота, но без везения, просто бред. Я бы предпочел просто отредактировать флаг (как exiftool делает это для всех видов метаданных, но не может вращать видео) вместо потоковой передачи содержимого в новый контейнер, также для более быстрой обработки (все видео находятся на NAS) ,
2 ответа на вопрос
5
aXeL-HH
Чтобы получить истинное вращение без потерь, я не мог найти решение, поэтому я взял шестнадцатеричный редактор (например, HxD ) и проанализировал повернутые видеофайлы.
откройте mp4 с помощью шестнадцатеричного редактора и videвыполните поиск, чтобы найти метаданные видеодорожки
несколько строк выше (для моих файлов в основном 9, иногда 12) вы должны увидеть trak...\tkhd
между ними должен быть @знак (HEX 40)
в двух строках перед ним сохраняется матрица вращения
Измените файл так, как вам нужно, и он должен вращаться в игроках, которые поддерживают флаг вращения (большинство современных игроков делают это).
Если ваше видео содержит стереозвук, оно явно не переключается, поэтому, если вы хотите, чтобы звук соответствовал повороту видео (на 180 °), вам необходимо переключить левый и правый каналы.
Эффектный ответ, чувак!
Suncatcher 5 лет назад
0
@ aXeL-HH Вы знаете, как это можно сделать в JAVA без использования каких-либо внешних библиотек?
ravi 5 лет назад
0