《T-REC-H.222.0-202106-S!!PDF-E.pdf》第27頁對ES進行了定義。ES流是PES packets(PES包)中編碼的視頻、編碼的音頻或其他編碼的比特流。一個ES流(elementary stream)在具有且只有一個stream_id的PES packets序列中攜帶:
在《音視頻入門基礎:MPEG2-TS專題(18)——PES流簡介》 中講到,PES流中一個PES packet由PES packet header(PES包的包頭)和PES packet data bytes(PES包的負載)組成。而PES packet data bytes中攜帶的就是ES流,即包含視頻、音頻或數據的連續碼流。
PES packet的PES packet header中有一個占1字節stream_id屬性,指定ES流的類型和編號:
從《音視頻入門基礎:MPEG2-TS專題(16)——PMT簡介》中也可以知道,在PMT表中存在一個stream_type屬性,指定媒體流的類型:
?
下面通過兩個具體的例子進行驗證:
(一)當某TS流中的PMT表中stream_type屬性的值為0x1B時,從上面表格中可以查到對應的媒體流類型為AVC,即H.264視頻流:
通過Elecard Stream Analyzer工具可以查看到其對應elementary_PID的視頻就是以0x000001作為起始碼的AnnexB格式的H.264碼流(關于AnnexB可以參考:《音視頻入門基礎:H.264專題(3)——EBSP, RBSP和SODB》)。也就是說該TS流中對應elementary_PID的ES流就是AnnexB格式的H.264碼流:
(二)當某TS流中的PMT表中stream_type屬性的值為0x0F時,從上面表格中可以查到對應的媒體流類型為ADTS包裝的AAC音頻流:
通過Elecard Stream Analyzer工具可以查看到其對應elementary_PID的音頻就是syncword屬性固定為0b111111111111的ADTS包裝的AAC音頻流(關于ADTS可以參考:《音視頻入門基礎:AAC專題(3)——AAC的ADTS格式簡介》)。也就是說該TS流中對應elementary_PID的ES流就是ADTS包裝的AAC音頻流: