惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
爱范儿
爱范儿
宝玉的分享
宝玉的分享
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - Franky
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 三生石上(FineUI控件)
人人都是产品经理
人人都是产品经理
阮一峰的网络日志
阮一峰的网络日志
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Last Week in AI
Last Week in AI
博客园 - 聂微东
大猫的无限游戏
大猫的无限游戏
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
博客园 - 叶小钗
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
小众软件
小众软件
博客园 - 司徒正美
博客园 - 【当耐特】
IT之家
IT之家

V2EX

我用 AI 写代码,但终端管理反而成了累赘——于是我做了 codux [调研] 各位在公司都用什么 ide 和 agent 写代码? 老运维 share 一个运维平台 看到有公司考核 token 指标,很好奇大家上个月的 AI 账单是多少 GLM-Coding 调用持续报错: z.ai 的 Lite 套餐几乎无法使用,官方 Pro/Max 是否稳定? 现在还有什么渠道可以稳定安全地使用 Claude 吗? 上海漕河泾内推,本组有 2 个 hc,一个后端,一个前端,预算都是 20k 左右,不打卡,氛围好 如果 V2EX 上有一组不永久保存聊天记录(比如只保存 7 天或者 24 小时)的聊天室,那么会开启哪些有用或者有趣的可能? gemini cli 貌似挂了,一直返回 403 第一次在自媒体上赚到钱 收集了最近在使用的低价 GPT, Gemini,邮箱等 AI 会员的小店合集 讨论个大实话:现在企业还在说 AI 编程提效 20%, 30%的,真的太落后,没用懂 AI。因为包括很多前沿公司,已经狂奔到提效 200%-500%的情况 [招聘][远程][币安] 前端/后端/QA/iOS/Android 至少 3 年以上经验 目前有大量 HC 欢迎投递 Chatgpt Pro 用量用不完的可以开这些设置 面试的时候好像遇到钓鱼了,给各位避个坑 cursor 年续费 22 号到期, 自动续费是否还是老的计次套餐呢 被两件破事毁掉的一下午,琐碎的内耗消磨人的精力 使用 Planet 存储 Codex 的会话或者重要信息 如果业务部门领导不要你开发功能,而是要求你教会它用 claude code 开发功能,你会怎么做? 分享一个 MacOS 接绿联 CM818 USB 转 DP 转接器使用感受 我的 HR 朋友 10 年老 Java ,非全大专,大家帮忙看看简历 开源了一个 AI 口语练习工具,音素级发音评分,完全免费可自部署 V2EX 上有哪些你觉得很有趣、印象深刻的妹纸? 字节为啥不出个国内版 Vercel? 有在大马的朋友吗? 问个运营商问题 你们在有领导的公司大群发过的最大胆的消息是什么 公司裁员,目前没有工作。想试试摆摊,做一个移动鲜啤打酒车 我的硬盘 Memblaze Pblaze 5 Linux 下不识别,给 Linux 内核提交了补丁, AI 说有望被合并 只有我一个人觉得 codex 不好用?
一款在线可视化多媒体格式解析工具: MediaInsight
chen495810242 · 2026-01-20 · via V2EX

MediaInsight 使用说明

电梯直达:MediaInsight

简介

MediaInsight 是一款在线可视化多媒体格式解析工具,专为音视频开发者和学习者打造。无需安装任何软件,打开浏览器即可深入分析各类媒体文件的内部结构。通过直观的树形结构、十六进制数据对照、图表统计等功能,帮助用户快速理解音视频封装格式的原理,定位开发中遇到的各类问题。

核心特性

广泛的格式支持

支持主流的音视频封装格式,包括:

  • 视频容器:FLV 、MP4 、fMP4 、MKV/WebM 、MPEG-TS 、MPEG-PS
  • 音频格式:MP3 、M4A/AAC
  • 流媒体:RTP 、HLS (m3u8)、HTTP-FLV
  • 裸流:H.264/H.265 Annex B

多维度解析视图

  • 媒体信息总览:快速查看文件的基本属性,如时长、码率、分辨率、编码格式等
  • 逐帧分析:深入每一帧的详细信息,包括 PTS/DTS 时间戳、帧类型、帧大小等
  • 逐包查看:针对 TS 、RTP 等格式,支持查看原始数据包结构
  • 容器结构:可视化展示 MP4 Box 树、FLV Tag 、MKV EBML 元素等容器层级结构
  • 字段级详情:每个解析字段都可展开查看,并高亮显示对应的十六进制原始数据

音视频预览

  • 视频帧预览:基于 WebCodec 技术,支持逐帧解码显示视频画面
  • 音频播放:支持单帧播放和连续播放,覆盖 MP3 、AAC 、G.711 等编码格式

数据可视化

  • 码率分布图:直观展示视频码率随时间的变化趋势
  • 帧间隔图表:分析帧间隔分布,快速发现卡顿或丢帧问题
  • 帧类型统计:I/P/B 帧占比一目了然

各格式详细解析说明

FLV (Flash Video)

FLV 是一种流媒体封装格式,结构简单,常用于直播场景。MediaInsight 提供完整的 FLV 结构解析:

文件头 (FLV Header)

  • Signature:文件签名,固定为 "FLV"
  • Version:版本号,通常为 1
  • TypeFlags:标志位,指示是否包含音频/视频
  • DataOffset:数据区起始偏移,通常为 9

Tag 结构 每个 FLV Tag 包含以下字段:

  • TagType:标签类型( 8=音频,9=视频,18=脚本数据)
  • DataSize:数据区大小( 3 字节)
  • Timestamp:时间戳( 3 字节 + 1 字节扩展)
  • StreamID:流 ID ,始终为 0
  • PreviousTagSize:前一个 Tag 的大小

音频 Tag 详情

  • SoundFormat:音频编码格式(如 10=AAC, 2=MP3, 7=G.711 A-law )
  • SoundRate:采样率( 0=5.5kHz, 1=11kHz, 2=22kHz, 3=44kHz )
  • SoundSize:采样精度( 0=8bit, 1=16bit )
  • SoundType:声道数( 0=单声道, 1=立体声)
  • AACPacketType:AAC 包类型( 0=序列头, 1=原始数据)

视频 Tag 详情

  • FrameType:帧类型( 1=关键帧, 2=非关键帧)
  • CodecID:编码格式( 7=AVC/H.264, 12=HEVC/H.265 )
  • AVCPacketType:AVC 包类型( 0=序列头, 1=NALU, 2=序列结束)
  • CompositionTime:CTS 偏移量

脚本数据 (onMetaData)

  • duration:时长

  • width/height:视频尺寸

  • framerate:帧率

  • videodatarate/audiodatarate:码率

    image

MP4 / fMP4

MP4 基于 ISO Base Media File Format ,采用 Box (也称 Atom )嵌套结构。MediaInsight 以树形视图展示完整的 Box 层级:

顶层 Box

  • ftyp:文件类型,包含品牌标识和兼容性信息
  • moov:元数据容器,包含所有轨道信息
  • mdat:媒体数据区,存储实际的音视频数据
  • moof:分片元数据( fMP4 特有)

moov 内部结构

  • mvhd:影片头,包含时长、时间刻度、创建时间等
  • trak:轨道容器,每个音视频流对应一个 trak
    • tkhd:轨道头,包含轨道 ID 、时长、宽高
    • mdia:媒体信息容器
      • mdhd:媒体头,包含时间刻度、时长、语言
      • hdlr:处理器类型( vide=视频, soun=音频)
      • minf:媒体信息
        • stbl:采样表,核心数据结构
          • stsd:采样描述,包含编码参数(如 avc1, hvc1, mp4a )
          • stts:时间到采样映射
          • stss:同步采样表(关键帧索引)
          • stsc:采样到 Chunk 映射
          • stsz:采样大小表
          • stco/co64:Chunk 偏移表

编码配置解析

  • avcC:H.264 解码配置,包含 SPS/PPS
  • hvcC:H.265 解码配置,包含 VPS/SPS/PPS
  • esds:AAC 音频配置,包含 AudioSpecificConfig
image

MKV / WebM

MKV 采用 EBML (Extensible Binary Meta Language) 结构,类似 XML 的二进制格式:

顶层元素

  • EBML:EBML 头,包含版本和文档类型
  • Segment:片段容器,包含所有媒体数据

Segment 内部结构

  • SeekHead:索引表,快速定位其他元素
  • Info:片段信息
    • TimestampScale:时间戳精度(纳秒)
    • Duration:总时长
    • MuxingApp/WritingApp:创建工具信息
  • Tracks:轨道定义
    • TrackEntry:轨道条目
      • TrackNumber:轨道编号
      • TrackType:类型( 1=视频, 2=音频, 17=字幕)
      • CodecID:编码标识(如 V_MPEG4/ISO/AVC )
      • CodecPrivate:编码私有数据
      • Video:视频参数(宽高、显示尺寸)
      • Audio:音频参数(采样率、声道数、位深)
  • Cluster:数据簇,包含实际媒体数据
    • Timestamp:簇时间戳
    • SimpleBlock/BlockGroup:数据块

MPEG-TS

MPEG-TS 是广播电视和流媒体常用的传输流格式,采用固定 188 字节的包结构:

TS 包头 (4 字节)

  • sync_byte:同步字节,固定为 0x47
  • transport_error_indicator:传输错误标志
  • payload_unit_start_indicator:负载单元起始标志
  • transport_priority:传输优先级
  • PID:包标识符( 13 位)
  • transport_scrambling_control:加扰控制
  • adaptation_field_control:自适应域控制
  • continuity_counter:连续计数器( 4 位)

自适应域 (Adaptation Field)

  • adaptation_field_length:自适应域长度
  • discontinuity_indicator:不连续标志
  • random_access_indicator:随机访问点标志
  • PCR_flag:PCR 存在标志
  • PCR:节目时钟参考( 42 位)

PSI 表

  • PAT (PID=0x0000):节目关联表,映射节目号到 PMT PID
  • PMT:节目映射表,定义节目内的流
    • program_number:节目号
    • PCR_PID:PCR 所在的 PID
    • stream_type:流类型( 0x1B=H.264, 0x24=H.265, 0x0F=AAC )
    • elementary_PID:基本流 PID
    • descriptors:描述符

PES 包

  • packet_start_code_prefix:起始码前缀 (0x000001)
  • stream_id:流标识
  • PES_packet_length:包长度
  • PTS/DTS:显示/解码时间戳
image

MPEG-PS

MPEG-PS 是节目流格式,常用于 DVD 和监控录像(如 GB28181 ):

Pack Header

  • pack_start_code:包起始码 (0x000001BA)
  • system_clock_reference:系统时钟参考 (SCR)
  • program_mux_rate:复用速率
  • pack_stuffing_length:填充长度

System Header

  • system_header_start_code:系统头起始码 (0x000001BB)
  • rate_bound:速率上限
  • audio_bound:音频流数量上限
  • video_bound:视频流数量上限
  • stream_id/buffer_bound_scale/buffer_size_bound:流缓冲信息

Program Stream Map (PSM)

  • stream_type:流类型
  • elementary_stream_id:基本流 ID
  • 支持的编码:H.264, H.265, G.711, AAC 等

PES 包 与 MPEG-TS 中的 PES 结构相同

image

RTP

RTP (Real-time Transport Protocol) 用于实时音视频传输:

RTP 头 (12 字节)

  • V:版本号( 2 位),固定为 2
  • P:填充标志( 1 位)
  • X:扩展标志( 1 位)
  • CC:CSRC 计数( 4 位)
  • M:标记位( 1 位),通常表示帧结束
  • PT:负载类型( 7 位)
    • 0 = PCMU (G.711 μ-law)
    • 8 = PCMA (G.711 A-law)
    • 96-127 = 动态类型( H.264, H.265, AAC 等)
  • sequence_number:序列号( 16 位)
  • timestamp:时间戳( 32 位)
  • SSRC:同步源标识( 32 位)

扩展头

  • extension_profile:扩展配置
  • extension_length:扩展长度
  • extension_data:扩展数据

H.264/H.265 Annex B 裸流

Annex B 是 H.264/H.265 的字节流格式,使用起始码分隔 NAL 单元:

起始码

  • 3 字节:0x000001
  • 4 字节:0x00000001 (通常用于 SPS/PPS/VPS/IDR )

NAL Unit Header

H.264:

  • forbidden_zero_bit:禁止位,必须为 0
  • nal_ref_idc:参考级别( 2 位)
  • nal_unit_type:NAL 类型( 5 位)
    • 1 = 非 IDR 图像片
    • 5 = IDR 图像片
    • 6 = SEI
    • 7 = SPS
    • 8 = PPS

H.265:

  • forbidden_zero_bit:禁止位
  • nal_unit_type:NAL 类型( 6 位)
    • 0-9 = 非 TSA/STSA 片
    • 16-21 = BLA/IDR/CRA 片
    • 32 = VPS
    • 33 = SPS
    • 34 = PPS
    • 39-40 = SEI
  • nuh_layer_id:层 ID ( 6 位)
  • nuh_temporal_id_plus1:时域 ID ( 3 位)

SPS 关键字段

  • profile_idc/level_idc:档次和级别
  • pic_width_in_mbs/pic_height_in_map_units:图像尺寸
  • frame_mbs_only_flag:仅帧编码标志
  • chroma_format_idc:色度格式
  • bit_depth_luma/bit_depth_chroma:位深

MP3

MP3 采用帧结构,每帧独立可解码:

帧头 (4 字节)

  • sync:同步字( 11 位全 1 )
  • version:MPEG 版本( 2 位)
    • 00 = MPEG 2.5
    • 10 = MPEG 2
    • 11 = MPEG 1
  • layer:层( 2 位)
    • 01 = Layer III
    • 10 = Layer II
    • 11 = Layer I
  • protection_bit:CRC 保护
  • bitrate_index:码率索引( 4 位)
  • sampling_frequency:采样率索引( 2 位)
  • padding_bit:填充位
  • private_bit:私有位
  • channel_mode:声道模式
    • 00 = 立体声
    • 01 = 联合立体声
    • 10 = 双声道
    • 11 = 单声道
  • mode_extension:模式扩展
  • copyright:版权标志
  • original:原始标志
  • emphasis:强调模式

帧大小计算

  • Layer I: (12 * bitrate / samplerate + padding) * 4
  • Layer II/III: 144 * bitrate / samplerate + padding
image

字段级详情与十六进制对照

MediaInsight 的一大特色是字段级的详细解析。当您在树形视图中点击任意字段时:

  1. 字段值显示:显示解析后的值,如数字、字符串、枚举名称
  2. 位置信息:显示该字段在文件中的字节偏移和位偏移
  3. 十六进制高亮:右侧的十六进制视图会自动高亮对应的原始字节
  4. 位级解析:对于位域字段,显示具体的位范围和二进制值

这种对照方式让您能够:

  • 验证解析结果的正确性
  • 学习各字段的二进制编码方式
  • 快速定位异常数据的具体位置

隐私安全

MediaInsight 采用纯前端解析技术,所有文件处理均在浏览器本地完成,不会上传任何数据到服务器,充分保障您的数据隐私和安全。

适用场景

  • 音视频入门学习:通过可视化界面直观理解各种封装格式的内部结构
  • 开发调试:快速定位编码异常、时间戳错乱、容器结构错误等问题
  • 质量分析:评估码率分布、帧间隔稳定性等指标
  • 协议分析:分析流媒体协议的数据包结构

快速开始

  1. 访问 MediaInsight 网站
  2. 点击「打开文件」选择本地媒体文件,或点击「打开链接」输入流媒体地址
  3. 等待解析完成,即可浏览各项分析结果
  4. 点击左侧树形结构中的字段,查看详细信息和十六进制数据
  5. 切换到「帧列表」查看逐帧信息,点击帧可预览视频画面或播放音频
  6. 切换到「图表」查看码率分布和帧间隔统计

MediaInsight —— 让多媒体格式解析变得简单直观。