pes

ffmpeg解析TS流

℡╲_俬逩灬. 提交于 2020-01-25 00:54:52
介绍: MPEG的系统层编码为不同的应用场景设计了两种格式: TS(Transport Stream) 和 PS(Program Stream) , 它们两者之间不具有层级关系, 在逻辑上,它们两者都是由PES(Packetized Elementary Stream)包组成的, 所以可以很方便地实现相互转换. TS(Transport Stream): 是将具有一个或多个独立时间基的一个或多个节目(包括音频和视频)组成一个流, 组成同一个节目的基本流(如一个视频流,多个音频流)的PES包有一个共用的时间基。 TS的包长标准为 188bytes . 从上面的定义可以分成 三层 来看TS/PS。 ES层 : 由单独的音频(如mp3),视频流(如h.264)组成基本的ES(Elementary Stream)。 PES层 : 将基本的ES按一定的规则(如H.264以AU)进行封装,并打上时间戳,组成PES。 TS/PS层: 将PES包进行切分后再封装成188bytes大小的TS包, 同时还将一些节目信息也封装成TS包(称为section), 两者共同组成TS层。 从上面的总结,TS/PS总体上来说,是一种封装格式,用来承载数据。 所以FFmpeg 将TS/PS的解析文件定义在 libavformat/mpegts.c 文件中 将音频,视频的解码定义在 libavcodec/mpeg12