MPEG2 TS小结
应该说真正了解TS,还是看了朋友推荐的《数字电视业务信息及其编码》一书之后,MPEG2 TS和数字电视是紧密不可分割的,值得总结一下其中的一些关系。ISO/IEC-13818-1:系统部分;ISO/IEC-13818-2:视频;ISO/IEC-13818-3:音频;ISO /IEC-13818-4:一致性测试;ISO/IEC-13818-5:软件部分;ISO/IEC-13818-6:数字存储媒体命令与控制;ISO /IEC-13818-7:高级音频编码;ISO/IEC-13818-8:系统解码实时接口;MPEG2系统任务包括:1. 规定以包传输数据的协议;2. 规定收发两端数据流同步的协议;3. 提供多个数据流的复用和解复
FFMpeg对MPEG2 TS流解码的流程分析[2]
5.渐入佳境恩,前面的基础因该已近够了,有点像手剥洋葱头的感觉,我们来看看针对MPEG TS的相应解析过程我们后面的代码,主要集中在[libavformat/mpegts.c]里面,毛爷爷说:集中优势兵力打围歼,恩,开始吧,蚂蚁啃骨头。static int mpegts_read_header(AVFormatContext *s,AVFormatParameters *ap){MpegTSContext *ts = s->priv_data;ByteIOContext *pb = s->pb;uint8_t buf[1024];int len;int64_t pos;....../* read the first 1024 bytes to get packet size */###############################################################
FFMpeg对MPEG2 TS流解码的流程分析
FFMpeg对MPEG2 TS流解码的流程分析1.引子gnxzzz广告都打出去了,不能没有反应.现在写东西很少了,一是年纪大了,好奇心少了许多,;二则是这几天又犯了扁桃体炎,每天只要是快睡觉或刚起床,头晕脑涨,不过功课还是的做的,是吧:)2. 从简单说起说道具体的音频或者视频格式,一上来就是理论,那是国内混资历的所谓教授的做为,对于我们,不合适,还是用自己的方式理解这些晦涩不已的理论吧。其实MPEG2是一族协议,至少已经成为ISO标准的就有以下几部分:ISO/IEC-13818-1:系统部分;ISO/IEC-13818-2:视频编码格式;ISO/IEC-13818-3:
TS基本概念和数据结构(转
)ES- Elementary Streams (原始流),对视频、音频信号及其他数据进行编码压缩后的数据流称为原始流。原始流包括访问单元,比如视频原始流的访问单元就是一副图像的编码数据。(2) PES- Packetized Elementary Streams (分组的原始流),原始流形成的分组称为PES分组,是用来传递原始流的一种数据结构(3)节目是节目元素的集合。节目元素可能是原始流,这些原始流有共同的时间基点,用来做同步显示。(4)传输流和节目流TS-Transport Stream 翻译为“传输流”PS-Program Stream 翻译为“节目流”PS用来传输和保存一道节目的编码数据或其他数据。
MPEG2 TS流
该说真正了解TS,还是看了朋友推荐的《数字电视业务信息及其编码》一书之后,MPEG2 TS和数字电视是紧密不可分割的,值得总结一下其中的一些关系。ISO/IEC-13818-1:系统部分;ISO/IEC-13818-2:视频;ISO/IEC-13818-3:音频;ISO/IEC- 13818-4:一致性测试;ISO/IEC-13818-5:软件部分;ISO/IEC-13818-6:数字存储媒体命令与控制;ISO/IEC- 13818-7:高级音频编码;ISO/IEC-13818-8:系统解码实时接口;MPEG2系统任务包括:1. 规定以包传输数据的协议;2. 规定收发两端数据流同步的协议;3. 提供多个数据流的复用和解复用
TS流解析之PMT表格解析(转)
PMT结构定义:typedef struct TS_PMT_Stream{ unsigned stream_type : 8; //指示特定PID的节目元素包的类型。该处PID由elementary PID指定 unsigned elementary_PID : 13; //该域指示TS包的PID值。这些TS包含有相关的节目元素 unsigned ES_info_length : 12; //前两位bit为00。该域指示跟随其后的描述相关节目元素的byte数 unsigned descriptor;}TS_PMT_Stream;//PMT 表结构体typedef struct TS_PMT{ unsigned table_id : 8; //固定为0x02, 表示PMT表
TS流解析之PAT表格解析(转)
PAT表格定义如下:typedef struct TS_PAT_Program{ unsigned program_number :16; //节目号 unsigned program_map_PID :13; //节目映射表的PID,节目号大于0时对应的PID,每个节目对应一个}TS_PAT_Program;//PAT表结构体typedef struct TS_PAT{ unsigned table_id : 8; //固定为0x00 ,标志是该表是PAT unsigned section_syntax_indicator : 1; //段语法标志位,固定为1 unsigned zero : 1; //0 unsigned reserved_1 : 2; // 保留位
TS流解析之TS包头解析(转)
根据前一篇中各数据的定义及数据结构,对数据进行分别解析如下:TS包头定义:typedef struct TS_packet_header{ unsigned sync_byte : 8; //同步字节, 固定为0x47,表示后面的是一个TS分组 unsigned transport_error_indicator : 1; //传输误码指示符 unsigned payload_unit_start_indicator : 1; //有效荷载单元起始指示符 unsigned transport_priority : 1; //传输优先, 1表示高优先级,传输机制可能用到,解码用不着 unsigned PID : 13; //
关于TS流的解析
IP数据报有首部和数据两部分组成的,首部的前一部分是固定长度20字节,是所有IP数据报必须具有的。首部包括:总长度、标识、MF、DF、片偏移。 数字信号实际传送的是数据流,一般数据流包括以下三种:ES流:也叫基本码流,包含视频、音频或数据的连续码流。PES流:也叫打包的基本码流,是将基本的码流ES流根据需要分成长度不等的数据包,并加上包头就形成了打包的基本码流PES流。TS流:也叫传输流,是由固定长度为188字节的包组成,含有独立时基的一个或多个节目,适用于误码较多的环境。 TS流(TransportStream)即在MPEG-2系统中,由视频
基于V4L2的视频驱动开发
编写基于V4L2视频驱动主要涉及到以下几个知识点:● 摄像头方面的知识 要了解选用的摄像头的特性,包括访问控制方法、各种参数的配置方法、信号输出类型等。● Camera解码器、控制器 如果摄像头是模拟量输出的,要熟悉解码器的配置。最后数字视频信号进入camera控制器后,还要熟悉camera控制器的操作。● V4L2的API和数据结构 编写驱动前要熟悉应用程序访问V4L2 的方法及设计到的数据结构。● V4L2的驱动架构 最后编写出符合V4L2规范的视频驱动。本文介绍基于S3
CIF、DCIF、D1格式介绍
CIF、DCIF、D1格式介绍 CIF简介CIF是常用的标准化图像格式(Common Intermediate Format)。在H.323协议簇中,规定了视频采集设备的标准采集分辨率。CIF = 352×288像素QCIF全称Quarter common intermediate format。QCIF也是常用的标准化图像格式。在H.323中,规定QCIF = 176×144像素。CIF格式具有如下特性: (1) 电视图像的空间分辨率为家用录像系统(Video Home System,VHS)的分辨率,即352×288。 (2) 使用非隔行扫描(non-interlaced scan)。 (3) 使用NTSC帧速率,电视图像的最大帧速率为30 000/1001≈29.97幅/秒。 (4) 使用1/2的PAL
有关音频编码的知识与技术参数(转载)
自然界中的声音非常复杂,波形极其复杂,通常我们采用的是脉冲代码调制编码,即PCM编码。PCM通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字编码。1、什么是采样率和采样大小(位/bit)? 声音其实是一种能量波,因此也有频率和振幅的特征,频率对应于时间轴线,振幅对应于电平轴线。波是无限光滑的,弦线可以看成由无数点组成,由于存储空间是相对有限的,数字编码过程中,必须对弦线的点进行采样。采样的过程就是抽取某点的频率值,很显然,在一秒中内抽取的点越多,获取得频率信息更丰富,为了复原波形,一次振动中,必
音频编码基础知识
音频编码基础知识 通常我们采用脉冲代码调制编码,即PCM编码。PCM通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字编码。1、什么是采样率和采样大小(位/bit)? 频率对应于时间轴线,振幅对应于电平轴线。波是无限光滑的,弦线可以看成由无数点组成,由于存储空间是相对有限的,数字编码过程中,必须对弦线的点进行采样。采样的过程就是抽取某点的频率值,很显然,在一秒中内抽取的点越多,获取得频率信息更丰富,为了复原波形,一次振动中,必须有2个点的采样,人耳能够感觉到的最高频率为20kHz,因此要满足人耳的听觉要
数字视频基础知识简介
一、数字视频的采样格式及数字化标准模拟视频的数字化包括不少技术问题,如电视信号具有不同的制式而且采用复合的YUV信号方式,而计算机工作在RGB空间;电视机是隔行扫描,计算机显示器大多逐行扫描;电视图像的分辨率与显示器的分辨率也不尽相同等等。因此,模拟视频的数字化主要包括色彩空间的转换、光栅扫描的转换以及分辨率的统一。模拟视频一般采用分量数字化方式,先把复合视频信号中的亮度和色度分离,得到YUV或YIQ分量,然后用三个模/数转换器对三个分量分别进行数字化,最后再转换成RGB空间。(一)、数字视频的采样格式根据电视
H264基本概念之 色彩空间(RGB vs YUV)
很早以前就知道RGB,三基色原理,即任何色彩都可以由红、绿、蓝混合而成,后来上了图像处理这门课才知道YUV(YCbCr)也是一种表示色彩的方式,只不过它是通过亮度和色度表示的。我猜想,如果色彩空间可以用三个独立的变量去表示,类似三维空间,那么通过建立不同的正交基,是完全可以对这个三维空间进行描述的,只是映射的方式不同而已,最重要的是找到有实际意义的物理表示。当对RGB进行压缩时,显然利用不上人类视觉系统对亮度比色度更敏感的特性,所以需要进行RGB向YUV的转换。可以说RGB是用来在LCD、CRT上显示用的,而YUV更便于视频信
H264基本概念之 采样(sampling)、帧(frame)与场(field)
一、视频信号的采样(上图来自参考文献2) 视频信号不同于音频信号,它是一个随着时间和空间时变的二维信号,通过采样、编码将模拟信号转换到数字信号,方便传输和存储。视频信号是由一系列的图像组成,时间上对视频模拟信号进行采样就是每个一段时间提取一个图像,而空间采样是指每一个图像由多少个像素点组成,像素点越多,图像画面越清晰。人的视觉系统决定了采样频率,当采样频率是10~20帧每秒,对快速运动的图像,人眼可以感觉到图像不流畅;当采样频率为20~30帧时,基本上看起来比较流畅。当采样频率更高时,其实图像的质量提
H264 编解码框架简介
H264 编解码框架简介阅读完H264/AVC 编解码器的介绍,脑海中只是留下以下三条:1、H264并没有明确规定一个编解码器如何实现,只是规定了一个编码后的视频比特流的句法,和该比特流的解码方法,这个与MPEG 相似。2、H264和以前的标准(如H261、H263、MPEG-1、MPEG-4)的编解码器实现流程没有太大区别,主要的不同在于各功能块的细节。3、H264就是利用实现的复杂性获得压缩性能的明显改善。(至于复杂度的评估,以后会介绍)下面介绍一下H264的编码器框图:编码器采用的仍是变换和预测的混合编码法。在图6.1中,输入的帧或场Fn以宏块为单位
Linux 音频 API 指南
由于历史的原因,在 Linux 环境下有多种API系统可用于声音编程。但没有合适的指引就难以找到合乎自己需要的体系。这里是一个指引,是由Lennart Poettering <mzoybt (at) 0pointer (dot) net>所写(参见:Homepage of Lennart ), 目的就是带你走出这个密林。 最简单的指引莫过于问自己:"我想(用 Linux Sound API)做些什么?"。下面就是答案: 我想写一个类似于媒体播放器的软件! 那就用 GStreamer。除非你只想基于KDE来编程,那么,你可以选择使用Phonon。 我想在自己的应用程序中加入事件声音! 使
宽带语音编码--机遇与实施挑战
宽带语音编码--机遇与实施挑战引言 随着 IP 电话的广泛应用以及 3G 无线手持终端即将大量投产,通过"新型"分组电话网络提供优于普通长话音质的音频性能面临巨大机遇。我们可利用数据网络不受目前电话网络 8 KHZ 采样率(4 KHZ 通频带)限制的功能来实现优于普通长话音质的语音。我们提供低价的 DSP 进行宽带信号压缩,便于其在分组网络上传输,这也是目前上述功能成为现实的原因之一。 本文所讨论的课题就是宽带语音编码器及其实施所面临的挑战。我们将探讨标准化的宽带语音编码器,并讨论当前技术状态以及发展方向。此外,我们
流媒体 Buffer 设计原理
1. Buffer 设计大小依据: (1) 依据是 你所需要缓冲多长时间,比如是100ms还是50ms; (2) 大小: 即每秒钟会收到的字节数; Buffer = dwBytesPerSec * dwLatencyInMilliseconds / 1000;2. 举例: 采集声音:(G711规格) Buffer = 16 /8 * 8000 * (PTime) /1000 其中, 16/8为每一个G711的Samplez占用2个字节, 8000为采样率,即每1s需要采样8000个G711的Sample, PTime = 缓冲时间(ms),假设PTime为50ms, 则 Buffer = 2*8000 * 50 / 1000 = 800 Bytes,(压缩前) 即