具体现象
使用 IOS 的 AVPlayer 播放 H265编码格式的mp4视频时,只有声音无图像。
原因
H265即 HEVC,在打包成mp4时需要有 codec tag。hev1 or hvc1是两种codec tag,表示mp4容器中hevc流的不同打包方式。Quicktime Player和iOS不支持hev1 tag的mp4(见 https://developer.apple.com/av-foundation/HEVC-Video-with-Alpha-Interoperability-Profile.pdf page 3 最后一句话:The codec type shall be ‘hvc1’.)。
查看是哪种 codec tag 命令:
ffmpeg -i input.mp4
解决办法
将hev1 tag 的mp4转成 hvc1 tag的。命令如下:
ffmpeg -i input-hev1.mp4 -c:v copy -tag:v hvc1 -c:a copy output-hvc1.mp4
参考链接
关于ios:使用AVPlayer播放H.265视频文件
编码H265到HVC1编解码器
AVPlayer支持的视频格式
Play H.265/HEVC video on IOS 11 using the native video player
FFmpeg hevc codec_tag兼容问题
What HEVC codec tag to use with fMP4, hvc1 or hev1?