具体现象

使用 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?

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐