Я смешиваю с h264 видео, загруженными FFmpeg на iPhone 3GS. Проблемой являются любые видео, зарегистрированные в ориентации "Портрета", относились к матрице преобразования их заставляющий их отобразить повернутые противочасы на 90 градусов.
Из того, что я понимаю к настоящему времени, я просто должен изменить матрицу преобразования в 'tkhd' атоме. Проблема, я испытываю затруднения при доступе или изменении этих данных. Я проверил реализацию FFmpeg для:
static int mov_read_tkhd(MOVContext *c, ByteIOContext *pb, MOVAtom atom)
который ясно показывает, как к матрице получают доступ в avformat, но когда я пытаюсь получить доступ к байтам заголовка с помощью тех же функций, я не получаю рациональных значений. Даже если я должен был успешно вытянуть матрицу, я не уверен, как заменить ее? FFmpeg имеет функции для получения и добавления к заголовку дорожки, но ничто для замены это кажется?
Любая справка значительно ценилась бы.
Спасибо, матовое.
Портретное видео, записанное на iPhone 3GS, странно поворачивается в альбомную ориентацию, и только quicktime воспроизводит его правильно, проигрыватели типа VLC и т.д. воспроизводят видео в портретном режиме в альбомной ориентации, потому что оно закодировано таким образом! Возможно, apple установила какой-то бит, чтобы quicktime определял и правильно устанавливал ориентацию.
Вы можете использовать опцию -vfilters в ffmpeg для поворота видео. Она доступна в версии r21242. Вы должны установить патч на вашу версию ffmpeg.
настройте сборку, используя --enable-vfilters
и вы можете использовать опцию:
ffmpeg -vfilters "rotate=90" -i input.mp4 output.mp4
для поворота входного видео.