Here is the info of my source file:
I want to keep audio quality and just encode the video track so I use this command:
ffmpeg -i INPUT -c:a copy -c:v l
Using the latest ffmpeg
(N-87630-ge9f9175-tessus
or building from HEAD
) you can encode to the MP4 version that macOS High Sierra Quicktime requires by using using -tag:v hvc1
.
If you have a hev1
-based mp4 and you need the container to be hvc1
and you do not want to re-encode it:
ffmpeg -i input-hev1.mp4 -c:v copy -tag:v hvc1 -c:a copy output-hvc1.mp4
Use ffprobe to confirm the change:
From:
~~~~
Stream #0:0(eng): Video: hevc (Main) (hev1 / 0x31766568), yuv420p(tv, progressive), 720x404, 164 kb/s, 29.97 fps,
~~~~
To:
~~~~
Stream #0:0(eng): Video: hevc (Main) (hvc1 / 0x31637668), yuv420p(tv, progressive), 720x404, 164 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 29.97 tbc (default)
~~~~
If you have an older avc1
based mp4, you will need to re-encode it.
ffprobe
example (avc1
):
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 960x540 [SAR 1:1 DAR 16:9], 2778 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 180k tbc (default)
Encoding Example:
ffmpeg
-i input.mp4 \
-c:v libx265 \
-preset slow \
-vf scale="720:trunc(ow/a/2)*2" \
-crf 28 \
-tag:v hvc1 \
-c:a aac -b:a 44100 \
output-hvc1.mp4
The key is the -tag:v hvc1
, without that you will end up with an hev1
-based container that Quicktime 10.4+ (High Sierra) will not open.