Using ffmpeg to scale app preview videos for the AppStore

喜欢而已 提交于 2020-06-08 19:11:24

问题


I'm generating an app preview video to send to the AppStore. Depending on the device type, the AppStore requires certain video resolutions.

I have a main video, with resolution 1920x1080, which I was able to upload.

I need to generate another video with the resolution 1920x886 for supporting 6.5" devices, so I used the following command to perform the scaling:

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

If I get the info for the generated video using ffmpeg -i I get the following result:

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

Ok, so it seems the output video is in the correct 1920x886 resolution.

However, when I try to upload this video the AppStore complains that the video is in the incorrect resolution.

If I open the file properties window on macos, the following information appears for the same video:

And, if I open the same video on VLC, I can see the following info on the Media Info screen:

So:

  1. ffmpeg -i tells me the video is in the resolution 1920x886.
  2. macos file properties tells me the video is in the resolution 1575x886.
  3. VLC tells me the video has a Resolution of 1920x898 and a Display Resolution of 1920x886.

Why are there three different resolutions? How can I change each one of them? I suppose the appstoreconnect website expects the file properties resolution to be 1920x886. How can I change that?


回答1:


FFmpeg's scale filter will adjust the sample aspect ratio of the video so that the original display ratio is preserved. Apple, apparently, computes the new effective display resolution using that SAR.

Insert a setsar filter to reset the SAR to 1, so that the display resolution is the same as the stored resolution.

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


来源:https://stackoverflow.com/questions/53573468/using-ffmpeg-to-scale-app-preview-videos-for-the-appstore

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!