Использование ffmpeg для масштабирования видео для предварительного просмотра в AppStore - PullRequest
0 голосов
/ 01 декабря 2018

Я создаю видео для предварительного просмотра приложения для отправки в AppStore.В зависимости от типа устройства AppStore требуется определенное разрешение видео.

У меня есть основное видео с разрешением 1920x1080, которое я смог загрузить.

Мне нужно создать другое видео сразрешение 1920x886 для поддержки 6,5 "устройств, поэтому для масштабирования я использовал следующую команду:

ffmpeg -i video_1920_1080.mp4 -vf scale=1920:886 -c:a copy video_1920_886.mp4

Если я получу информацию для сгенерированного видео с помощью ffmpeg -i, я получу следующий результат:

ffmpeg -i video_1920_886.mp4

ffmpeg version 3.4.2 Copyright (c) 2000-2018 the FFmpeg developers
  built with Apple LLVM version 9.0.0 (clang-900.0.39.2)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/3.4.2 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --disable-jack --enable-gpl --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma
  libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libavresample   3.  7.  0 /  3.  7.  0
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
  libpostproc    54.  7.100 / 54.  7.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'hittin_1920_886.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.83.100
  Duration: 00:00:29.13, start: 0.000000, bitrate: 705 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x886 [SAR 443:540 DAR 16:9], 694 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      timecode        : 00:00:10:20
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 2 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
    Stream #0:2(eng): Data: none (tmcd / 0x64636D74), 0 kb/s
    Metadata:
      handler_name    : TimeCodeHandler
      timecode        : 00:00:10:20

Хорошо, похоже, выходное видео имеет правильное разрешение 1920x886.

Однако, когда я пытаюсь загрузить это видео, AppStore жалуется, что видео имеет неправильное разрешение.

Если я открою окно свойств файла на macos, для этого видео появится следующая информация:

Properties of video_1920_886.mp4

И, если я откроюто же видео на VLC, я вижу следующую информацию на экране Media Info:

Codec Details on VLC

Итак:

  1. ffmpeg-Я сказал мне, что видео в тesolution 1920x886.
  2. Свойства файла macos говорят мне, что видео имеет разрешение 1575x886.
  3. VLC говорит мне, что видео имеет разрешение 1920x898 и разрешение экрана 1920x886.

Почему существует три разных разрешения?Как я могу изменить каждый из них?Я полагаю, что веб-сайт appstoreconnect ожидает разрешение свойств файла 1920x886.Как я могу это изменить?

1 Ответ

0 голосов
/ 01 декабря 2018

Фильтр масштаба FFmpeg отрегулирует форматное соотношение сэмпла видео, чтобы сохранить исходное соотношение экрана.Apple, по-видимому, вычисляет новое эффективное разрешение экрана, используя этот SAR.

Вставьте фильтр setsar, чтобы сбросить SAR на 1, чтобы разрешение экрана совпадало с сохраненным разрешением.

ffmpeg -i video_1920_1080.mp4 -vf scale=1920:886,setsar=1 -c:a copy video_1920_886.mp4
...