入门视频采集与处理(BT656简介)

简介:

1. 帧的概念(Frame)

一个视频序列是由N个帧组成的,采集图像的时候一般有2种扫描方式,一种是逐行扫描(progressive scanning),一种是隔行扫描(interlaced scanning)。对于隔行扫描,每一帧一般有2个场(field),一个叫顶场(top field),一个叫底场(bottom field)。假设一帧图像是720行,那么,顶场就包含其中所有的偶数行,而底场则包含其中所有的奇数行。


2. 场的概念(field)   


注意,上面提到顶场和底场,用的是“包含”二字,而不是说完全由后者组成,因为在BT.656标准中,一个场是由三个部分组成的:


场 = 垂直消隐顶场(First Vertical Blanking) + 有效数据行(Active Video) + 垂直消隐底场(Second Vertical Blanking)


对于顶场,有效数据行就是一帧图像的所有偶数行,而底场,有效数据行就是一帧图像的所有奇数行。顶场和底场的空白行的个数也有所不同,那么,对于一个标准的 8bit BT656(4:2:2)SDTV(标清) 的视频而言,对于一帧图像,其格式定义如下:


    

由上图可以知道,对于PAL制式,每一帧有625行,其中,顶场有效数据288行,底场有效数据也是288行,其余行即为垂直消隐信号。为什么是288行?因为PAL制式的SDTV或者D1的分辨率为 720*576,即一帧有576行,故一场为288行。

    

由上图我们还可以知道,顶场有效数据的起始行为第23行,底场有效数据的起始行为第335行。

    

另外,上图中的 F 标记奇偶场,V标记 是否为垂直消隐信号。


3. 每一行的组成(Lines)

    

下面说明每一行的组成,一行是由4个部分组成:

    

行 = 结束码(EAV) + 水平消隐(Horizontal Vertical Blanking) + 起始码(SAV) + 有效数据(Active Video)

    

典型的一行数据组成如下图所示:


    

起始码(SAV)和结束码(EAV),它是标志着一行的开始结束的重要标记,也包含了其他的一些重要的信息,后面将会讲到。

    

为什么水平消隐 是280字节,这个我暂时还没搞清楚,不知道是不是标准定义的。

    

为什么一行中的有效数据是 1440 字节? 因为PAL制式的SDTV或者D1的分辨率为 720*576,即一行有720个有效点,由于采集的是彩***像,那么一行就是由亮度信息(Y)和色差信息(CbCr)组成的,由于是 YCbCr422格式,故一行中有720列Y,720列CbCr,这样,一行的有效字节数就自然为 720 x 2 = 1440 字节了。


4. EAV和SAV

   

EAV和SAV都是4个字节(Bytes),由上面的图可以知道,SAV后面跟着的就是有效的视频数据了。那么,EAV和SAV的格式是怎么样的呢?

    

EAV和SAV的4个字节的格式规定如下(下面以16进制表示):

    

FF 00 00 XY

    

其中,前三个字节为固定的,必须是FF 00 00,而第4个字节(XY)是根据场、消隐信息而定的,其8个bit含义如下: 1 F V H  P3 P2 P1 P0

    

其中,F:标记场信息,传输顶场时为0,传输底场时为1

    

V:标记消隐信息,传输消隐数据时为1,传输有效视频数据时为0

    

H:标记EAV还是SAV,SAV为0,EAV为1

    

而 P0~P3为保护比特,其值取决于F、H、V,起到校验的作用,计算方法如下:





本文转自 Jhuster 51CTO博客,原文链接:http://blog.51cto.com/ticktick/553535,如需转载请自行联系原作者

相关文章
[笔记]音视频学习之SDL篇《三》使用拓展库
[笔记]音视频学习之SDL篇《三》使用拓展库
|
3月前
|
Web App开发 Android开发
FFmpeg开发笔记(四十六)利用SRT协议构建手机APP的直播Demo
实时数据传输在互联网中至关重要,不仅支持即时通讯如QQ、微信的文字与图片传输,还包括音视频通信。一对一通信常采用WebRTC技术,如《Android Studio开发实战》中的App集成示例;而一对多的在线直播则需部署独立的流媒体服务器,使用如SRT等协议。SRT因其优越的直播质量正逐渐成为主流。本文档概述了SRT协议的使用,包括通过OBS Studio和SRT Streamer进行SRT直播推流的方法,并展示了推流与拉流的成功实例。更多细节参见《FFmpeg开发实战》一书。
67 1
FFmpeg开发笔记(四十六)利用SRT协议构建手机APP的直播Demo
|
3月前
|
编解码 算法 Linux
Linux平台下RTSP|RTMP播放器如何跟python交互投递RGB数据供视觉算法分析
在对接Linux平台的RTSP播放模块时,需将播放数据同时提供给Python进行视觉算法分析。技术实现上,可在播放时通过回调函数获取视频帧数据,并以RGB32格式输出。利用`SetVideoFrameCallBackV2`接口设定缩放后的视频帧回调,以满足算法所需的分辨率。回调函数中,每收到一帧数据即保存为bitmap文件。Python端只需读取指定文件夹中的bitmap文件,即可进行视频数据的分析处理。此方案简单有效,但应注意控制输出的bitmap文件数量以避免内存占用过高。
|
传感器 编解码 移动开发
Camera知识体系架构之驱动&应用&调试学习笔记-以瑞芯微RV1109为例(一)
Camera知识体系架构之驱动&应用&调试学习笔记-以瑞芯微RV1109为例(一)
796 0
|
开发框架 移动开发 数据可视化
HaaS UI 使用 树莓派 打造自己的第一个案例
HaaS UI 使用 树莓派 打造自己的第一个案例
256 0
|
传感器 开发框架 网络协议
【毕设参考】ESP32 + HaaS Python 打造数据上云声控灯
【毕设参考】ESP32 + HaaS Python 打造数据上云声控灯
193 0
|
传感器 人工智能 开发框架
ESP32 + Python 还不知道怎么垃圾分类? 用HaaS DIY一个智能垃圾桶吧
ESP32 + Python 还不知道怎么垃圾分类? 用HaaS DIY一个智能垃圾桶吧
240 0
|
传感器 监控 网络协议
【毕设参考】ESP32 + HaaS Python打造可以统计流量的自动感应门系统
【毕设参考】ESP32 + HaaS Python打造可以统计流量的自动感应门系统
200 0
|
运维 监控 AliOS-Things
4_7_Haas 连接云端实验_演示篇|学习笔记
快速学习4_7_Haas 连接云端实验_演示篇。
118 0
4_7_Haas 连接云端实验_演示篇|学习笔记
|
存储 编解码
嵌入式实践教程--FFmpeg4.1问题记录
嵌入式实践教程--FFmpeg4.1问题记录
嵌入式实践教程--FFmpeg4.1问题记录