😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD
如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。
😊 座右铭:不想当开发的测试,不是一个好测试✌️。
如果感觉博主的文章还不错的话,还请点赞、收藏哦!👍

在这里插入图片描述
新手小白最近在研究 hls 协议相关内容,怎么看网上都到V6 版本了,我们公司才用到V3 版本,后面问了研发,研发说V2和V3 公司内容规定的,而其他的版本是 HLS 标准的东西,另外HLS V6,其实就是 hls(fmp4),它是 HLS 的一种 “新格式”,不是大家常说的 “常用版本”。

fmp4 概述

fmp4的全称是 Fragmented MP4,也就是分片式 MP4。这个和 fmp4 和普通 mp4 又有什么关系呢?普通 MP4 是整体的,而 fmp4 是切成小块的,适合流媒体。

HLS 的分片格式有两种

  • 普通 HLS(你们说的 v2/v3):用TS 文件当分片(比如你之前生成的.ts),兼容性极强,支持 HEVC 编码,但 Safari 对它有特殊限制。
  • HLS (fMP4)(对应官方 v6):用fMP4 文件当分片,是苹果推的新格式 —— Safari 浏览器播放 HEVC 编码的视频时,必须用 fMP4 格式的 HLS,传统 TS 格式的 HLS 即使是 HEVC 编码,Safari 也不认。

fMP4 的核心结构

fMP4 的文件由两部分组成:

  1. 初始化片段(Initialization Segment):包含全局元数据(moov原子),记录音视频的编码格式、分辨率、采样率等 “全局配置信息”—— 播放器只需加载一次初始化片段,就能理解后续所有分片的编码规则。
  2. 媒体片段(Media Fragment):每个片段是独立的 “小 MP4 块”,包含moof(片段元数据)和mdat(片段媒体数据)—— 播放器可以按顺序加载片段,下载一个片段就播放一个片段,无需等待整个文件下载完成。

fMP4 的主要应用场景(和你的 HLS 场景强相关)

fMP4 最核心的应用是网络流媒体协议,尤其是和你之前聊的 HLS 高度绑定:

  1. HLS (fMP4)(对应 HLS 官方 v6 + 版本)
    • 传统 HLS 用 TS 文件作为分片,而 fMP4 是苹果推的 HLS “新分片格式”;
    • 苹果 Safari 浏览器强制要求:播放 HEVC(H.265)编码的 HLS 视频时,必须用 fMP4 格式(TS 格式的 HEVC HLS 在 Safari 上无法播放)—— 这就是之前聊天里说 “Safari 播 HEVC 需要发 HLS (fMP4)” 的原因。
  2. MPEG-DASH:DASH 是国际标准的流媒体协议,唯一推荐的容器格式就是 fMP4,几乎所有 DASH 流都是基于 fMP4 封装的。
  3. 低延迟直播:fMP4 的片段可以切得很小(比如几百毫秒),配合 “Chunked Transfer Encoding” 能实现秒级以下的直播延迟,比传统 TS 格式更适合低延迟场景。

通用 fMP4 格式和适配 Safari 播放 HEVC 的 fMP4 HLS
fMP4 格式的 HLS,FFmpeg 会自动生成:

  • 1 个播放列表文件(.m3u8
  • 1 个初始化片段(init.m4s,存储全局编码配置)
  • N 个媒体分片(seg-0.m4sseg-1.m4s…,每个是独立的 fMP4 片段)
    在这里插入图片描述

案例一

ffmpeg -i bbb_30fps_gop_60_3mbps.mp4 -c copy -f hls -hls_time 5 -start_number 0 -hls_list_size 0 -hls_segment_type fmp4 -hls_playlist_type vod output.m3u8

在这里插入图片描述

案例二

ffmpeg -i ../bbb_30fps_gop_60_3mbps.mp4 -vcodec libx265 -crf 28 -preset medium -tag:v hvc1 -f hls -hls_time 5 -start_number 0 -hls_list_size 0 -hls_segment_type fmp4 -hls_playlist_type vod output.m3u8

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐