FMP4概念
fmp4,是适应于现代浏览器的一种流媒体格式。
和mp4格式不同的是,以往的mp4格式化也分为header信息和payload信息,一个大的mp4就会有一个很大的头信息,不适合与现在的网络环境。所以新的fmp4格式就出现了,fmp4格式有一个带了metadata的头片段,及后面一序列的fragment,每个fragment都有各自的header信息,这样就把header信息也分成了一个个小的片段,更适合现在的应用场景。所以fmp4格式也就是用于MediaSource对象的SourceBuffer的格式,通过一个initSegment和一序列的segment塞给MediaSource对象来播放。
FMP4生成
FFmpeg命令行转换
1、H264文件封装成FMP4
ffmpeg.exe -i test.264 -g 52 -f mp4 -movflags frag_keyframe+empty_moov output.mp4
2、rtsp封装成FMP4
ffmpeg -i
rtsp://admin:admin123@172.16.28.253:554/h264/ch1/main/av_stream?videoCodecType=H.264
-g 52 -f mp4 -movflags frag_keyframe+empty_moov output.mp4
movflags参数:
frag_keyframe: 导致碎片输出,
empty_moov:将导致输出100%分段; 没有这个,第一个片段将被多路复用为短片(使用moov),其后是片段中的其余媒体,
-g 52 强制(至少)每第52帧作为关键帧
FFmpeg API方式转换
写入文件格式头信息的时候设置AVDictionary结构体
AVDictionary *opts = NULL;
av_dict_set(&opts, "movflags", "frag_keyframe+empty_moov", 0);
avformat_write_header(o_fmt_ctx, &opts);
av_dict_free(&opts);
- 1
- 2
- 3
- 4
MP4格式查看
可以用MP4 reader工具查看
标准MP4格式
FMP4格式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2018-02-07 本地dns服务器到底是什么?有没有精确的概念?
2018-02-07 DNS原理总结及其解析过程详解
2018-02-07 让32位应用程序不再为2G内存限制苦恼
2018-02-07 32位模式下C/C++程序可用最大内存
2018-02-07 windows任务管理器中的工作设置内存,内存专用工作集,提交大小详解
2017-02-07 让ie6 7 8 9支持原生html5 websocket
2017-02-07 解决浏览器不兼容websocket