IPhone записывает видео, которые вращаются в системах Windows

Я записываю видео на iPhone и загружаю их на свой Linux-сервер. Пользователи могут видеть эти видео на веб-сайте. Если пользователи видят видео на Mac или iDevices, видео выглядит прекрасно, но когда пользователи видят это видео в системах Windows, эти ролики поворачиваются.

Я предполагаю, что это из-за какого-то флага Apple в записанном видео, которое системы Windows не могут читать. Могу ли я записывать видео в некотором роде, чтобы они не вращались в системах Windows? Или можно каким-либо образом перекодировать видео с правильной ориентацией интерфейса с помощью FFmpeg?

Я открыт как для FFmpeg, так и для iOS.

Вы не можете изменить способ записи видеоизображения в камеру iOS. Он устанавливает флаг вращения, и если вы хотите, чтобы видео отображалось правильно как в OS X, так и в Windows (и других игроках), вам необходимо:

  • Удалите флаг вращения. Теперь ваше видео – пейзаж, но все еще не так.
  • Перекодируйте видео, вращая его.

Скачайте ffmpeg (статическая сборка для вашей ОС в порядке).

Затем вам нужен фильтр transpose , например

 ffmpeg -i portrait.mov \ -c:v libx264 -filter:v "transpose=1" \ -c:a copy \ -metadata:s:v:0 rotate=0 out.mp4 

Несколько замечаний:

  • Здесь transpose=1 будет вращаться на 90 °. Если ваше видео перевернуто, вам нужно комбинировать параметры. Вы можете использовать -filter:v "transpose=2,transpose=2" или другие. См. Здесь: Как перевернуть видео на 180 ° (вертикально / вверх тормашками) с помощью FFmpeg?

  • Параметр -metadata:s:v:0 rotate=0 гарантирует, что метаданные вращения в первом потоке видео снова будут установлены на 0 (раньше это было на 90), поэтому ваше видео теперь отлично отображается как на OS X, так и на других ОС.

  • Естественно, транспонирование будет перекодировать видео, и вы потеряете качество. Добавьте параметр -crf после -c:v libx264 чтобы установить коэффициент постоянной ставки , который контролирует качество. Используйте более низкие значения, чтобы получить лучшее качество. 23 фактически является значением по умолчанию, поэтому вам не нужно указывать его вообще, но вам может потребоваться выбрать что-то менее 18, если видео в конечном итоге выглядит неудачно иначе, например, -c:v libx264 -crf 18 .

  • В некоторых случаях вы можете просто удалить флаг вращения, но сохранить исходный битовый поток видео неповрежденным. Для этого замените -c:v libx264 -filter:v "transpose=1" на -c:v copy .

  • Ознакомьтесь с руководством по кодированию x264 для получения дополнительной информации.

  • WebView и HTML5
  • Работа с видео (DVD, .avi .mkv) в Java
  • Рабочий способ сделать видео с изображений в C #
  • Программно воспроизводить видео со звуком в Safari и Mobile Chrome
  • Постоянное исправление для видеозахвата Opencv
  • Пакетное преобразование папки .mkv-файлов в файлы .m4v с использованием ffmpeg в MAC OS X
  • Использование FFmpeg в .net?
  • Как использовать распознавание речи Google Google без загрузки видео на YouTube?
  • Как использовать эффект медленного движения в определенный интервал времени с помощью ffmpeg
  • Зеленая полоса поверх каждого (сетевого) видео, искаженные цвета тоже
  • Поиск более простой альтернативы видеочата в Skype
  • Давайте будем гением компьютера.