问题
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:
- ffmpeg -i tells me the video is in the resolution 1920x886.
- macos file properties tells me the video is in the resolution 1575x886.
- 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