4

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

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

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

1 ответ1

6

Вы не можете изменить способ записи видео с камеры 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 для получения дополнительной информации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .