You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FFmpeg的AVMediaType枚举中AVMEDIA_TYPE_NB对应什么类型的流

FFmpeg AVMEDIA_TYPE_NB 枚举项说明

AVMEDIA_TYPE_NB(后缀NB是Number的缩写)不对应任何实际存在的媒体数据流类型,它是FFmpeg枚举体系里通用的哨兵计数位,没有实际业务语义。

  • FFmpeg里几乎所有枚举末尾带_NB后缀的项都是这个作用:它的枚举值刚好等于前面所有有效媒体类型的总个数,专门用来做边界校验、数组长度定义用的,从设计之初就不是给真实流标记类型用的。
  • 正常解封装、识别出来的合法媒体流,codec_type字段永远不会出现AVMEDIA_TYPE_NB。合法的流类型只会是它之前明确定义的枚举值:视频(AVMEDIA_TYPE_VIDEO)、音频(AVMEDIA_TYPE_AUDIO)、字幕(AVMEDIA_TYPE_SUBTITLE)、附件(AVMEDIA_TYPE_ATTACHMENT)、裸数据(AVMEDIA_TYPE_DATA)等。

你搜到的“用于过滤丢弃数据包”的用法,属于开发者的自定义业务技巧:因为没有任何真实流的类型会等于AVMEDIA_TYPE_NB,写过滤逻辑时可以把“丢弃所有包”的匹配标记设为这个值,不需要额外定义新的常量,本质是借用了它“不匹配任何合法类型”的特性,不是这个枚举项本身的官方设计用途。

实际开发时做类型合法性判断,统一用codec_type < AVMEDIA_TYPE_NB作为合法判断条件即可,大于等于这个值的类型全是异常值,一般是内存踩坏、头文件和动态库版本不匹配导致的错乱,正常流程不会触发。

如果真的在正常读流时碰到codec_type == AVMEDIA_TYPE_NB的流,不要尝试按正常流处理,直接跳过或者抛异常就行,这个流本身要么损坏要么是识别失败的无效流。

内容的提问来源于stack exchange,提问作者Bernie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 15:09:20