音视频入门基础:FLV专题(24)——FFmpeg源码中,获取FLV文件视频信息的实现

一、引言

通过FFmpeg命令可以获取到FLV文件的视频压缩编码格式、色彩格式(像素格式)、分辨率、码率、帧率信息:

而由《音视频入门基础:FLV专题(9)------Script Tag简介》和《音视频入门基础:FLV专题(15)------Video Tag简介》可以知道,FLV文件中名称为"onMetadata"的Script Tag、每个Video Tag的VideoTagHeader、AVCDecoderConfigurationRecord(extradata)都会包含视频信息。

名称为"onMetadata"的Script Tag:

每个Video Tag的VideoTagHeader:

AVCDecoderConfigurationRecord:

可以看到,FLV文件中的上述三个地方都会存在视频信息,有些信息比如:视频压缩编码格式、视频帧率、视频分辨率甚至是重复的。所以FFmpeg到底获取的是哪个地方的视频信息呢,本文为大家揭开谜底。

二、视频压缩编码格式

FLV文件中名称为"onMetadata"的Script Tag、每个Video Tag的VideoTagHeader都包含视频压缩编码格式信息。但是FFmpeg获取FLV文件的视频压缩编码格式,是从Video Tag的VideoTagHeader的CodecID属性中获取的、而忽略onMetadata中的:

FFmpeg源码从Video Tag的VideoTagHeader中获取视频压缩编码格式的内部实现原理可以参考:《音视频入门基础:FLV专题(16)------FFmpeg源码中,解码Video Tag的VideoTagHeader的实现》。

三、视频压缩编码格式的profile

FFmpeg获取FLV文件的视频压缩编码格式的profile,是通过SPS的profile_idc属性获取到的,具体可以参考:《音视频入门基础:H.264专题(17)------FFmpeg源码中,获取H.264视频的profile的实现》:

四、视频的色彩格式

FFmpeg获取FLV文件视频的色彩格式,是通过SPS中的属性chroma_format_idc获取到的,具体可以参考:《音视频入门基础:H.264专题(13)------FFmpeg源码中通过SPS属性获取视频色彩格式的实现》:

五、视频分辨率

FLV文件中名称为"onMetadata"的Script Tag、AVCDecoderConfigurationRecord中的SPS都包含视频分辨率信息。但是FFmpeg获取FLV文件的视频分辨率,是通过SPS中的属性获取的、而忽略onMetadata中的。具体可以参考:《音视频入门基础:H.264专题(12)------FFmpeg源码中通过SPS属性计算视频分辨率的实现》:

六、视频码率

FFmpeg获取FLV文件中的视频码率是通过解析名称为"onMetadata"的Script Tag获取的。具体原理跟获取FLV文件中的音频码率一致,具体可以参考:《音视频入门基础:FLV专题(23)------FFmpeg源码中,获取FLV文件音频信息的实现(下)》。由于FFmpeg源码有bug,所以通过FFmpeg命令显示的视频码率不准确:

相关推荐
AI2512242 小时前
AI视频生成工具技术解析:从文生视频到分镜脚本全流程
人工智能·音视频
好家伙VCC2 小时前
**发散创新:基于FFmpeg的视频编码优化实践与实战代码解析**在现代多媒体系统中,
java·python·ffmpeg·音视频
Ai搬运工14 小时前
【保姆级教程】B站缓存视频如何转为正常MP4格式?
缓存·音视频·bilibili
y小花4 小时前
安卓音频接口从APP到Hal的调用流程
android·音视频
byte轻骑兵5 小时前
【HFP】规范精讲[24]: 蓝牙HFP术语宝典
音视频·车机·hfp·耳机·蓝牙通话
EasyGBS6 小时前
国标GB28181视频分析平台EasyGBS视频质量诊断为平安社区视频监控筑牢安全防线
人工智能·安全·音视频
XiaoLeisj6 小时前
Android 短视频播放详情页实战:从播放器模块拆分、Media3 与 FlowHelper 接入,到 ViewPager 高度适配和详情数据联动
android·okhttp·音视频·架构设计·flowhelper
互联网散修6 小时前
鸿蒙实战:用 want.param 实现视频播放器跨端迁移续播
华为·音视频·harmonyos·跨端迁移续播
JianZhen✓6 小时前
从零到一:基于声网Agora的医疗视频问诊前端实战指南
前端·音视频
视频技术分享8 小时前
智能硬件音视频SDK选型:RTC核心评估指标全解析
音视频