flv解复用介绍—FFmpeg源码分析

flvdec.c 里面其实定义了 3 种 flv 的 Demuxer,例如 ff_kux_demuxerff_live_flv_demuxerff_flv_demuxer

不过我们比较常用的是 ff_flv_demuxer,如下:

AVInputFormat ff_flv_demuxer = {
    .name           = "flv",
    .long_name      = NULL_IF_CONFIG_SMALL("FLV (Flash Video)"),
    .priv_data_size = sizeof(FLVContext),
    .read_probe     = flv_probe,
    .read_header    = flv_read_header,
    .read_packet    = flv_read_packet,
    .read_seek      = flv_read_seek,
    .read_close     = flv_read_close,
    .extensions     = "flv",
    .priv_class     = &flv_class,
};

ff_flv_demuxer 有 5 个函数接口,如下:

  1. flv_probe,探测一段数据,给这段数据打分,越符合 flv 的格式分数就越高
  2. flv_read_header,读取 FLV 的头部,进行解析。
  3. flv_read_packet,读取 FLV 的 Tag,进行解析,FLV 的 Tag 不只是 编码压缩后的数据,还有一些媒体信息。
  4. flv_read_seek,FLV 的默认 seek 性能是很差的,通常需要使用 -flvflags add_keyframe_index 手动加上关键帧表,以此来提高 seek 的性能。
  5. flv_read_close,xxxx

版权所属 xianwanzhiyin.net 罗上文 2023 all right reserved,powered by Gitbook该文件修订时间: 2023-06-10 00:08:00

results matching ""

    No results matching ""