You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HEVC编码HLS(.m3u8)视频无法在Safari播放,其他视频正常

Safari无法播放自制HEVC HLS流但VLC可正常播放的问题

我使用以下FFmpeg命令将视频转码为支持HLS的HEVC编码格式:

ffmpeg -i originalName.mp4 -c:v libx265 -tag:v hvc1 -g 60 -hls_time 2 -hls_playlist_type vod -hls_segment_type fmp4 originalName-8000-fmp4-1080p.m3u8"

上传至服务器后,通过Safari访问存储地址时仅显示破损播放器图标(Safari原生支持HEVC HLS),但相同路径下用VLC播放器可正常播放。

我曾怀疑是服务器问题,但上传从其他来源下载的.m3u8及分段文件后,在Safari中可正常播放。对比VSCode中两个m3u8文件的结构,未发现差异。

补充说明:将编码改为H.264后,生成的HLS流可在Safari正常播放;且通过ffprobe检测,能正常播放的参考视频同样是hvc1编码的HEVC格式。


排查与解决建议

  • 修正FFmpeg命令的语法错误:原命令末尾多了一个多余的双引号,可能导致潜在的生成异常,修正后的命令:
    ffmpeg -i originalName.mp4 -c:v libx265 -tag:v hvc1 -g 60 -hls_time 2 -hls_playlist_type vod -hls_segment_type fmp4 originalName-8000-fmp4-1080p.m3u8
    
  • 强制生成Safari兼容的fMP4分段:Safari对HEVC的fMP4结构要求严格,需确保分段文件的moov原子位于头部。添加-movflags参数优化fMP4格式:
    ffmpeg -i originalName.mp4 -c:v libx265 -tag:v hvc1 -g 60 -hls_time 2 -hls_playlist_type vod -hls_segment_type fmp4 -movflags frag_keyframe+empty_moov+default_base_moof originalName-8000-fmp4-1080p.m3u8
    
  • 验证服务器MIME类型配置:确保服务器对HLS相关文件设置正确的MIME类型:
    • .m3u8:application/vnd.apple.mpegurl
    • .m4s/.mp4分段:video/mp4
  • 对比码流参数差异:用ffprobe导出正常视频与自制视频的流信息,对比核心参数(如HEVC profile/level、色彩空间、音频编码):
    ffprobe -show_streams -print_format json your-video.m3u8 > your-video.json
    ffprobe -show_streams -print_format json working-video.m3u8 > working-video.json
    
    重点检查视频流的profile、level、color_space、color_transfer、color_primaries,以及音频是否为Safari支持的AAC-LC格式。

内容的提问来源于stack exchange,提问作者user1207524

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 06:30:15