使用FFmpeg-kit从HEVC视频流生成可存入iOS相册的MP4问题
iOS兼容HEVC格式MP4生成方案
你的问题核心是iOS相册对HEVC编码的MP4文件有严格的格式规范,当前的流复制封装命令没有补充iOS要求的专属标识和元数据配置,导致生成的文件无法被系统识别。
修正后的可用命令
流复制场景(输入HEVC流本身符合编码规范)
-loglevel trace -i inputfile -c:v copy -tag:v hvc1 -movflags +faststart -f mp4 -y outputfile
参数说明
-tag:v hvc1:核心必填参数。FFmpeg默认封装HEVC到MP4时使用hev1作为编码标识,iOS系统仅识别hvc1标识的HEVC编码MP4文件,添加该参数即可修正编码标签不兼容的问题-movflags +faststart:将MP4文件的moov元数据块移动到文件头部,符合iOS媒体文件读取逻辑,同时也能优化文件的加载速度- 移除了原命令中重复的
-r 20参数:流复制模式下帧率参数不会生效,额外添加反而可能干扰原视频流的时间戳识别,如果你需要强制固定帧率,仅当你触发转码逻辑时添加该参数即可
异常场景兼容方案
如果你的输入是裸HEVC(annexb格式)视频流,直接封装仍可能报错,可以补充输入格式声明:
-loglevel trace -f hevc -r 20 -i inputfile -c:v copy -tag:v hvc1 -movflags +faststart -f mp4 -y outputfile
如果流复制仍生成不符合要求的文件,可以放弃流复制,转码生成标准iOS兼容HEVC文件:
-loglevel trace -i inputfile -c:v libx265 -crf 28 -preset medium -tag:v hvc1 -movflags +faststart -f mp4 -y outputfile
内容的提问来源于stack exchange,提问作者sejal harsoda
相关产品推荐
相关产品推荐

