总结
作者:罗上文,微信:Loken1,公众号:FFmpeg弦外之音
通常情况下,原始数据、编码系统、封装格式之间的关系如下图:

FLV只是比较常用的封装格式之一,实际上音视频领域有非常多的封装格式,例如:MKV、RMVB、AVI、WMV等等
封装格式支持的编码格式是不一样的。例如:在2022年之前,FLV在Adobe的标准文档里面并不支持H265编码,只是民间约定了H265在FVL的封装规则,具体请看 runner365(施维)的 ffmpeg_rtmp_h265 开源项目。
如果你想知道一个封装格式支持哪些编码,可以阅读 FFmpeg 的源代码,或者尝试问GPT。
下面是FFmpeg项目的 flvenc.c 文件的部分代码,这个数组就表明了在FLV封装格式里支持哪些编码。
static const AVCodecTag flv_video_codec_ids[] = {
{ AV_CODEC_ID_FLV1, FLV_CODECID_H263 },
{ AV_CODEC_ID_H263, FLV_CODECID_REALH263 },
{ AV_CODEC_ID_MPEG4, FLV_CODECID_MPEG4 },
{ AV_CODEC_ID_FLASHSV, FLV_CODECID_SCREEN },
{ AV_CODEC_ID_FLASHSV2, FLV_CODECID_SCREEN2 },
{ AV_CODEC_ID_VP6F, FLV_CODECID_VP6 },
{ AV_CODEC_ID_VP6, FLV_CODECID_VP6 },
{ AV_CODEC_ID_VP6A, FLV_CODECID_VP6A },
{ AV_CODEC_ID_H264, FLV_CODECID_H264 },
{ AV_CODEC_ID_HEVC, FLV_CODECID_HEVC },
{ AV_CODEC_ID_VP8, FLV_CODECID_VP8 },
{ AV_CODEC_ID_VP9, FLV_CODECID_VP9 },
{ AV_CODEC_ID_NONE, 0 }
};