
电梯直达:MediaInsight
MediaInsight 是一款在线可视化多媒体格式解析工具,专为音视频开发者和学习者打造。无需安装任何软件,打开浏览器即可深入分析各类媒体文件的内部结构。通过直观的树形结构、十六进制数据对照、图表统计等功能,帮助用户快速理解音视频封装格式的原理,定位开发中遇到的各类问题。
支持主流的音视频封装格式,包括:
FLV 是一种流媒体封装格式,结构简单,常用于直播场景。MediaInsight 提供完整的 FLV 结构解析:
文件头 (FLV Header)
Signature:文件签名,固定为 "FLV"Version:版本号,通常为 1TypeFlags:标志位,指示是否包含音频/视频DataOffset:数据区起始偏移,通常为 9Tag 结构 每个 FLV Tag 包含以下字段:
TagType:标签类型( 8=音频,9=视频,18=脚本数据)DataSize:数据区大小( 3 字节)Timestamp:时间戳( 3 字节 + 1 字节扩展)StreamID:流 ID ,始终为 0PreviousTagSize:前一个 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:码率
MP4 基于 ISO Base Media File Format ,采用 Box (也称 Atom )嵌套结构。MediaInsight 以树形视图展示完整的 Box 层级:
顶层 Box
ftyp:文件类型,包含品牌标识和兼容性信息moov:元数据容器,包含所有轨道信息mdat:媒体数据区,存储实际的音视频数据moof:分片元数据( fMP4 特有)moov 内部结构
mvhd:影片头,包含时长、时间刻度、创建时间等trak:轨道容器,每个音视频流对应一个 traktkhd:轨道头,包含轨道 ID 、时长、宽高mdia:媒体信息容器mdhd:媒体头,包含时间刻度、时长、语言hdlr:处理器类型( vide=视频, soun=音频)minf:媒体信息stbl:采样表,核心数据结构stsd:采样描述,包含编码参数(如 avc1, hvc1, mp4a )stts:时间到采样映射stss:同步采样表(关键帧索引)stsc:采样到 Chunk 映射stsz:采样大小表stco/co64:Chunk 偏移表编码配置解析
avcC:H.264 解码配置,包含 SPS/PPShvcC:H.265 解码配置,包含 VPS/SPS/PPSesds:AAC 音频配置,包含 AudioSpecificConfigMKV 采用 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 是广播电视和流媒体常用的传输流格式,采用固定 188 字节的包结构:
TS 包头 (4 字节)
sync_byte:同步字节,固定为 0x47transport_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 PIDPMT:节目映射表,定义节目内的流program_number:节目号PCR_PID:PCR 所在的 PIDstream_type:流类型( 0x1B=H.264, 0x24=H.265, 0x0F=AAC )elementary_PID:基本流 PIDdescriptors:描述符PES 包
packet_start_code_prefix:起始码前缀 (0x000001)stream_id:流标识PES_packet_length:包长度PTS/DTS:显示/解码时间戳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:流缓冲信息stream_type:流类型elementary_stream_id:基本流 IDPES 包 与 MPEG-TS 中的 PES 结构相同
RTP (Real-time Transport Protocol) 用于实时音视频传输:
RTP 头 (12 字节)
V:版本号( 2 位),固定为 2P:填充标志( 1 位)X:扩展标志( 1 位)CC:CSRC 计数( 4 位)M:标记位( 1 位),通常表示帧结束PT:负载类型( 7 位)sequence_number:序列号( 16 位)timestamp:时间戳( 32 位)SSRC:同步源标识( 32 位)扩展头
extension_profile:扩展配置extension_length:扩展长度extension_data:扩展数据Annex B 是 H.264/H.265 的字节流格式,使用起始码分隔 NAL 单元:
起始码
NAL Unit Header
H.264:
forbidden_zero_bit:禁止位,必须为 0nal_ref_idc:参考级别( 2 位)nal_unit_type:NAL 类型( 5 位)H.265:
forbidden_zero_bit:禁止位nal_unit_type:NAL 类型( 6 位)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 采用帧结构,每帧独立可解码:
帧头 (4 字节)
sync:同步字( 11 位全 1 )version:MPEG 版本( 2 位)layer:层( 2 位)protection_bit:CRC 保护bitrate_index:码率索引( 4 位)sampling_frequency:采样率索引( 2 位)padding_bit:填充位private_bit:私有位channel_mode:声道模式mode_extension:模式扩展copyright:版权标志original:原始标志emphasis:强调模式帧大小计算
(12 * bitrate / samplerate + padding) * 4144 * bitrate / samplerate + paddingMediaInsight 的一大特色是字段级的详细解析。当您在树形视图中点击任意字段时:
这种对照方式让您能够:
MediaInsight 采用纯前端解析技术,所有文件处理均在浏览器本地完成,不会上传任何数据到服务器,充分保障您的数据隐私和安全。
MediaInsight 让多媒体格式解析变得简单直观。
1 dinjufen 3 天前 |
2 hugogo 3 天前 厉害,可以部分替代 ffprobe 了 |
3 chen495810242 OP @hugogo 才部分替代吗?还有哪些功能没有的?像 tag header ,ts header 解析,ffprobe 也做不到吧 |