TS封裝格式
ts流最早應用於數字電視領域,其格式非常複雜包含的配置資訊表多達十幾個,視訊格式主要是mpeg2。蘋果公司發明的http live stream流媒體是基於ts檔案的,不過他大大簡化了傳統的ts流,只需要2個最基本的配置表PAT和PMT,再加上音視訊內容就可以了,hls流媒體視訊編碼的主要格式為h264/mpeg4,音訊為aac/mp3。
ts檔案分為三層:ts層(Transport Stream)、pes層(Packet Elemental Stream)、es層(Elementary Stream)。es層就是音視訊資料,pes層是在音視訊資料上加了時間戳等對資料幀的說明資訊,ts層是在pes層上加入了資料流識別和傳輸的必要資訊。
1.ts層
ts包大小固定為188位元組,ts層分為三個部分:ts header、adaptation field、payload。ts header固定4個位元組;adaptation field可能存在也可能不存在,主要作用是給不足188位元組的資料做填充;payload是pes資料。
1.1.ts header
sync_byte | 8bit | 同步位元組,固定為0x47 |
transport_error_indicator | 1bit | 傳輸錯誤指示符,表明在ts頭的adapt域後由一個無用位元組,通常都為0,這個位元組算在adapt域長度內 |
payload_unit_start_indicator | 1bit | 負載單元起始標示符,一個完整的資料包開始時標記為1 |
transport_priority | 1bit | 傳輸優先順序,0為低優先順序,1為高優先順序,通常取0 |
pid | 13bit | pid值(Packet ID號碼,唯一的號碼對應不同的包) |
transport_scrambling_control | 2bit | 傳輸加擾控制,00表示未加密 |
adaptation_field_control | 2bit | 是否包含自適應區,‘00’保留;‘01’為無自適應域,僅含有效負載;‘10’為僅含自適應域,無有效負載;‘11’為同時帶有自適應域和有效負載。 |
continuity_counter | 4bit | 遞增計數器,從0-f,起始值不一定取0,但必須是連續的 |
ts層的內容是通過PID值來標識的,主要內容包括:PAT表、PMT表、音訊流、視訊流。解析ts流要先找到PAT表,只要找到PAT就可以找到PMT,然後就可以找到音視訊流了。PAT表的PID值固定為0。PAT表和PMT表需要定期插入ts流,因為使用者隨時可能加入ts流,這個間隔比較小,通常每隔幾個視訊幀就要加入PAT和PMT。PAT和PMT表是必須的,還可以加入其它表如SDT(業務描述表)等,不過hls流只要有PAT和PMT就可以播放了。
- PAT表:他主要的作用就是指明瞭PMT表的PID值。
- PMT表:他主要的作用就是指明瞭音視訊流的PID值。
- 音訊流/視訊流:承載音視訊內容。
表 |
PID 值 |
PAT |
0x0000 |
CAT |
0x0001 |
TSDT |
0x0002 |
EIT,ST |
0x0012 |
RST,ST |
0x0013 |
TDT,TOT,ST |
0x0014 |
下面以一個TS流的其中一個Packet中的Packet Header為例進行說明:
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
… |
|
Packet(十六進位制) |
4 |
7 |
0 |
7 |
e |
5 |
1 |
2 |
… |
||||||||||||||||||||||||
Packet(二進位制) |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
… |
Packet Header 資訊 |
1 sync_byte=0x47 |
2 |
3 |
4 |
5 PID=0x07e5 |
6 |
7 |
8 |
… |
sync_byte=01000111, 就是0x47,這是DVB TS規定的同步位元組,固定是0x47.
transport_error_indicator=0, 表示當前包沒有發生傳輸錯誤.
payload_unit_start_indicator=0, 含義參考ISO13818-1標準文件
transport_priority=0, 表示當前包是低優先順序.
PID=00111 11100101即0x07e5, Video PID
transport_scrambling_control=00, 表示節目沒有加密
adaptation_field_control=01 即0x01,具體含義請參考ISO13818-1
continuity_counte=0010 即0x02,表示當前傳送的相同型別的包是第3個
1.2.adaption
adaptation_field_length | 1B | 自適應域長度,後面的位元組數 |
flag | 1B | 取0x50表示包含PCR或0x40表示不包含PCR |
PCR | 5B | Program Clock Reference,節目時鐘參考,用於恢復出與編碼端一致的系統時序時鐘STC(System Time Clock)。 |
stuffing_bytes | xB | 填充位元組,取值0xff |
自適應區的長度要包含傳輸錯誤指示符標識的一個位元組。pcr是節目時鐘參考,pcr、dts、pts都是對同一個系統時鐘的取樣值,pcr是遞增的,因此可以將其設定為dts值,音訊資料不需要pcr。如果沒有欄位,ipad是可以播放的,但vlc無法播放。打包ts流時PAT和PMT表是沒有adaptation field的,不夠的長度直接補0xff即可。視訊流和音訊流都需要加adaptation field,通常加在一個幀的第一個ts包和最後一個ts包裡,中間的ts包不加。
1.3.PAT格式(Program Association Table,節目關聯表)
PAT表定義了當前TS流中所有的節目,其PID為0x0000,它是PSI的根節點,要查尋找節目必須從PAT表開始查詢。
table_id | 8b | PAT表固定為0x00 |
section_syntax_indicator | 1b | 固定為1 |
zero | 1b | 固定為0 |
reserved | 2b | 固定為11 |
section_length | 12b | 後面資料的長度 |
transport_stream_id | 16b | 傳輸流ID,固定為0x0001 |
reserved | 2b | 固定為11 |
version_number | 5b | 版本號,固定為00000,如果PAT有變化則版本號加1 |
current_next_indicator | 1b | 固定為1,表示這個PAT表可以用,如果為0則要等待下一個PAT表 |
section_number | 8b | 固定為0x00 |
last_section_number | 8b | 固定為0x00 |
開始迴圈 | ||
program_number | 16b | 節目號為0x0000時表示這是NIT,節目號為0x0001時,表示這是PMT |
reserved | 3b | 固定為111 |
PID | 13b | 節目號對應內容的PID值 |
結束迴圈 | ||
CRC32 | 32b | 前面資料的CRC32校驗碼 |
通過一段TS流中一個Packet分析PAT表,這裡我們分析一段TS流其中一個Packet的Packet Data部分:
首先給出一個數據包,其資料如下:
Packet Header |
Packet Data |
0x47 0x40 0x00 0x10 |
0000 b0 11 00 01 c1 00 00 00 00 e0 1f 00 01 e1 00 24 ac48 84 ff ff…… ff ff |
分析Packet Header如下表所示:
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
… |
|
Packet(十六進位制) |
4 |
7 |
4 |
0 |
0 |
0 |
1 |
0 |
… |
||||||||||||||||||||||||
Packet(二進位制) |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
… |
Packet Header Bits |
1 sync_byte=0x47 |
2 |
3 |
4 |
5 PID=0x0000 |
6 |
7 |
8 |
… |
根據包頭資料格式,我們可以知曉整個資料包的屬性,列表如下:
sync_byte |
0x47 |
固定同步位元組 |
transport_error_indicator |
“0” |
沒有傳輸錯誤 |
payload_unit_start_indicator |
“1” |
在前4個位元組後會有一個調整位元組。所以實際資料應該為去除第一個位元組後的資料。即上面資料中紅色部分不屬於有效資料包。 |
transport_priority |
“0” |
傳輸優先順序低 |
PID |
0x0000 |
PID=0x0000說明資料包是PAT表資訊 |
transport_scrambling_control |
“00” |
未加密 |
adaptation_field_control |
“01” |
附加區域控制 |
continuity_counte |
“0000” |
包遞增計數器 |
如上表所示,我們可以知道,首先Packet的Packet Data是PAT資訊表,因為其PID為0x0000,並且在包頭後需要除去一個位元組才是有效資料(payload_unit_start_indicator="1")。這樣,Packet Data就應該是“00 b0 11 00 01 c1 00 00 00 00 e0 1f 00 01 e1 00 24 ac48 84 ff ff …… ff ff”。
Packet Data分析 |
|||||||||||||||||||||||||
第n個位元組 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
… |
||||
Packet Data(除去開頭的0x00) |
00 |
b0 |
11 |
00 |
01 |
c1 |
00 |
00 |
00 |
00 |
e0 |
1f |
00 |
01 |
e1 |
00 |
24 |
ac |
48 |
84 |
… |
||||
欄位名 |
位 |
具體值 |
次序 |
說明 |
|||||||||||||||||||||
table_id |
8 |
0000 |
第1個位元組 0000 0000B(0x00) |
PAT的table_id只能是0x00 |
|||||||||||||||||||||
section_syntax_indicator |
1 |
1 |
第2、3個位元組 1011 0000 0001 0001B(0xb0 11) |
段語法標誌位,固定為1 |
|||||||||||||||||||||
zero |
1 |
0 |
|||||||||||||||||||||||
reserved |
2 |
11 |
|||||||||||||||||||||||
section_length |
12 |
0000 0001 0001B=0x011=17 |
段長度為17位元組 |
||||||||||||||||||||||
transport_stream_id |
16 |
0x0001 |
第4、5個位元組 0x00 0x01 |
||||||||||||||||||||||
reserved |
2 |
11 |
第6個位元組 1100 0001B(0xc1) |
||||||||||||||||||||||
version_number |
5 |
00000 |
一旦PAT有變化,版本號加1 |
||||||||||||||||||||||
current_next_indicator |
1 |
1 |
當前傳送的PAT表可以使用,若為0則要等待下一個表 |
||||||||||||||||||||||
section_number |
8 |
0x00 |
第7個位元組0x00 |
||||||||||||||||||||||
last_section_number |
8 |
0x00 |
第8個位元組 0x00 |
||||||||||||||||||||||
開始迴圈 |
|||||||||||||||||||||||||
program_number |
16 |
0x0000-第一次 |
2個位元組(0x00 00) |
節目號 |
|||||||||||||||||||||
reserved |
3 |
111 |
2個位元組 1110 0000 0001 1111B(0xe0 1f) |
||||||||||||||||||||||
network_id(節目號為0時) program_map_PID(節目號為其他時) |
13 |
0 0000 0001 1111B=31 -第一次 |
節目號為0x0000時,表示這是NIT,PID=0x001f,即31 節目號為0x0001時,表示這是PMT,PID=0x100,即256 |
||||||||||||||||||||||
結束迴圈 |
|||||||||||||||||||||||||
CRC_32 |
32 |
-- |
4個位元組 |
由以上幾個表可以分析出PAT表和PMT表有著內在的聯絡。也就是之前提到的。PAT表描述了當前流的NIT(Network Information Table,網路資訊表)中的PID、當前流中有多少不同型別的PMT表及每個PMT表對應的頻道號。
1.4.PMT格式( Program Map Table,節目對映表 )
table_id | 8b | PMT表取值隨意,0x02 |
section_syntax_indicator | 1b | 固定為1 |
zero | 1b | 固定為0 |
reserved | 2b | 固定為11 |
section_length | 12b | 後面資料的長度 |
program_number | 16b | 頻道號碼,表示當前的PMT關聯到的頻道,取值0x0001 |
reserved | 2b | 固定為11 |
version_number | 5b | 版本號,固定為00000,如果PAT有變化則版本號加1 |
current_next_indicator | 1b | 固定為1 |
section_number | 8b | 固定為0x00 |
last_section_number | 8b | 固定為0x00 |
reserved | 3b | 固定為111 |
PCR_PID | 13b | PCR(節目參考時鐘)所在TS分組的PID,指定為視訊PID |
reserved | 4b | 固定為1111 |
program_info_length | 12b | 節目描述資訊,指定為0x000表示沒有 |
開始迴圈 | ||
stream_type | 8b | 流型別,標誌是Video還是Audio還是其他資料,h.264編碼對應0x1b,aac編碼對應0x0f,mp3編碼對應0x03 |
reserved | 3b | 固定為111 |
elementary_PID | 13b | 與stream_type對應的PID |
reserved | 4b | 固定為1111 |
ES_info_length | 12b | 描述資訊,指定為0x000表示沒有 |
結束迴圈 | ||
CRC32 | 32b | 前面資料的CRC32校驗碼 |
通過一段TS流中一個Packet分析PMT表,通過分析一段TS流的資料包Packet來學習PMT表。下面給出了一段TS流資料中的一個Packet(十六進位制數)
Packet Header |
Packet Data |
0x47 0x43 0xe8 0x12 |
00 02 b0 12 00 01 c1 00 00 e3 e9 f0 00 1b e3 e9 f0 00 f0 af b4 4f ff ff…… ff ff |
首先解析Packet Header,分析如下:
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
… |
|
Packet(十六進位制) |
4 |
7 |
4 |
3 |
e |
8 |
1 |
2 |
… |
||||||||||||||||||||||||
Packet(二進位制) |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
… |
Packet Header Bits |
1 sync_byte=0x47 |
2 |
3 |
4 |
5 PID=0x03e8 |
6 |
7 |
8 |
… |
Packet Header分析 |
|||
Packet Header:0x47 0x40 0x00 0x10 |
|||
1 |
sync_byte |
0x47 |
固定同步位元組 |
2 |
transport_error_indicator |
“0” |
沒有傳輸錯誤 |
3 |
payload_unit_start_indicator |
“1” |
在前4個位元組後會有一個調整位元組。所以實際資料應該為去除第一個位元組後的資料。 |
4 |
transport_priority |
“0” |
傳輸優先順序低 |
5 |
PID |
0x03e8 |
PID=0x03e8說明資料包是PMT表資訊 |
6 |
transport_scrambling_control |
“00” |
未加密 |
7 |
adaptation_field_control |
“01” |
附加區域控制 |
8 |
continuity_counte |
“0010” |
包遞增計數器 |
因為payload_unit_start_indicator=‘1’,在解析資料包的時候需要去除Packet Data的第一個位元組。下面是對Packet Data的詳細解析:
PMT表的Packet Data分析 |
|||||||||||||||||||||||||
第n個位元組 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
… |
||||
Packet Data |
02 |
b0 |
12 |
00 |
01 |
c1 |
00 |
00 |
e3 |
e9 |
f0 |
00 |
1b |
e3 |
e9 |
f0 |
00 |
f0 |
1b |
e3 |
… |
||||
欄位名 |
位數 |
具體值 |
次序 |
說明 |
|||||||||||||||||||||
table_id |
8 |
0x02 |
第1個位元組 |
||||||||||||||||||||||
section_syntax_indicator |
1 |
1B |
第2、3個位元組 1011 0000 0001 0010B=0xb012 |
段語法標誌 |
|||||||||||||||||||||
zero |
1 |
0B |
|||||||||||||||||||||||
reserved |
2 |
11B=0x03 |
|||||||||||||||||||||||
section_length |
12 |
0000 0001 0010B=0x12 |
段長度,從program_number開始,到CRC_32(含)的位元組總數 |
||||||||||||||||||||||
program_number |
16 |
0x0001 |
第4、5個位元組 0x00 01 |
頻道號碼,表示當前的PMT關聯到的頻道 |
|||||||||||||||||||||
reserved |
2 |
11B=0x03 |
第6個位元組 1100 0001B=0xc1 |
||||||||||||||||||||||
version_number |
5 |
00000B=0x00 |
版本號碼,如果PMT內容有更新,則它會遞增1通知解複用程式需要重新接收節目資訊 |
||||||||||||||||||||||
current_next_indicator |
1 |
1B=0x01 |
當前未來標誌符 |
||||||||||||||||||||||
section_number |
8 |
0x00 |
第7個位元組0x00 |
當前段號碼 |
|||||||||||||||||||||
last_section_number |
8 |
0x00 |
第8個位元組 0x00 |
最後段號碼,含義和PAT中的對應欄位相同 |
|||||||||||||||||||||
reserved |
3 |
111B=0x07 |
第9、10個位元組 1110 0011 1110 1001B=0xe3e9 |
||||||||||||||||||||||
PCR_PID |
13 |
000111110B=0x3e9 |
PCR(節目參考時鐘)所在TS分組的PID |
||||||||||||||||||||||
reserved |
4 |
1111B=0x0f |
第11、12個位元組 1111 0000 0000 0000=0xf000 |
||||||||||||||||||||||
program_info_length |
12 |
000000000000B=0x000 |
節目資訊長度(之後的是N個描述符結構,一般可以忽略掉,這個欄位就代表描述符總的長度,單位是Bytes)緊接著就是頻道內部包含的節目型別和對應的PID號碼了 |
||||||||||||||||||||||
stream_type |
8 |
0x1b |
第13個位元組 0x1b |
流型別,標誌是Video還是Audio還是其他資料 |
|||||||||||||||||||||
reserved |
3 |
111B=0x07 |
第14、15個位元組 1110 0011 1110 1001B=0xe3e9 |
||||||||||||||||||||||
elementary_PID |
13 |
000111110 1001=0x3e9 |
該節目中包括的視訊流,音訊流等對應的TS分組的PID |
||||||||||||||||||||||
reserved |
4 |
1111B=0x0f |
第16、17個位元組 1111 0000 0000 0000B=0xf000 |
||||||||||||||||||||||
ES_info_length |
12 |
0000 0000 0000=0x000 |
|||||||||||||||||||||||
CRC |
32 |
—— |
—— |
1.4.pes層
pes層是在每一個視訊/音訊幀上加入了時間戳等資訊,pes包內容很多,我們只留下最常用的。
pes start code | 3B | 開始碼,固定為0x000001 |
stream id | 1B | 音訊取值(0xc0-0xdf),通常為0xc0 視訊取值(0xe0-0xef),通常為0xe0 |
pes packet length | 2B | 後面pes資料的長度,0表示長度不限制, 只有視訊資料長度會超過0xffff |
flag | 1B | 通常取值0x80,表示資料不加密、無優先順序、備份的資料 |
flag | 1B | 取值0x80表示只含有pts,取值0xc0表示含有pts和dts |
pes data length | 1B | 後面資料的長度,取值5或10 |
pts | 5B | 33bit值 |
dts | 5B | 33bit值 |
1.5.es層
es層就是音視訊裸資料了,常用的音訊編碼格式為AAC,視訊編碼格式為H.264
2.打包H.264和AAC為TS
對於H.264視訊而言,每一幀的時間長度為
frame_duration = 1000/fps
當fps為25時,一幀時間為40ms
對於AAC音訊而言,每一幀的時間長度為
音訊幀的播放時間=一個AAC幀對應的取樣樣本的個數/取樣頻率(單位為s)
一幀 1024個 sample。取樣率 Samplerate 44100KHz,每秒44100個sample, 所以根據公式 音訊幀的播放時間=一個AAC幀對應的取樣樣本的個數/取樣頻率
當前AAC一幀的播放時間是= 1024*1000000/44100= 22.32ms(單位為ms)
由此得到了每一幀資料的持續時間,音視訊交叉儲存在容器中:一個時間軸:
時間軸:0 22.32 40 44.62 66.96 80 89.16 111.48 120 ................
音 頻 :0 22.32 44.62 66.96 89.16 111.48 ................
視 頻 :0 40 80 120 ................
即視訊的持續時間相加 和音訊的持續時間相加作比較,誰小寫入哪個。 (自己的方法) 音訊資料(AAC 48k) 21.33 42.44 63.99 85.32 視訊資料(H264 25fps) 40 80 時間軸 -------------------------------------------> (ts容器)迴圈做(寫一幀視訊,然後寫一幀音訊,然後視訊的時間減去音訊的時間,如果大於一幀音訊的時間,就多寫一幀音訊,知道視訊多出來的時間小於一幀音訊) 使用 Elecard Stream Analyzer 可以分析TS流
相關推薦
TS封裝格式
ts流最早應用於數字電視領域,其格式非常複雜包含的配置資訊表多達十幾個,視訊格式主要是mpeg2。蘋果公司發明的http live stream流媒體是基於ts檔案的,不過他大大簡化了傳統的ts流,只需要2個最基本的配置表PAT和PMT,再加上音視訊內容就可以了,h
基於FFmpeg的封裝格式MP4(TS)
一、 封裝MP4原理: 每一幀音訊或視訊都有一個持續時間:duration: 取樣頻率是指將模擬聲音波形進行數字化時,每秒鐘抽取聲波幅度樣本的次數。 。正常人聽覺的頻率範圍大約在20Hz~20kHz之間,根據奈奎斯特取樣理論,為了保證聲音不失真,取樣頻率應該在40kHz
轉 常見視頻編碼方式以及封裝格式
方式 個數 目前 格式 調用 works 質量 撥號 求和 常見視頻編碼方式以及封裝格式 常見視頻編碼方式 所謂視頻編碼方式就是指通過特定的壓縮技術,將某個視頻格式的文件轉換成另一種視頻格式文件的方式。視頻流傳輸中最為重要的編解碼標準有國際電聯的H
轉 音視頻封裝格式、編碼格式知識
flash swf 開發 ng- 多個 rate .com 流媒體 window 常見的AVI、RMVB、MKV、ASF、WMV、MP4、3GP、FLV等文件其實只能算是一種封裝標準。 一個完整的視頻文件是由音頻和視頻2部分組成的。H264、Xvid等就是視頻編碼格式
H264 封裝格式
auto nbsp style its 轉換 pda 例如 h264 convert H264有兩種封裝格式,一種是MP4格式,一種是annexb格式 MP4格式是以4個字節長度分割 annexb格式是以0x000001 or 0x00000001分割 有些時候需要把MP4
視音頻數據處理入門:FLV封裝格式解析
tail rip 主頁 typedef gda ack print 地址 視頻 ===================================================== 視音頻數據處理入門系列文章: 視音頻數據處理入門:RGB、YUV像素數據處理 視音頻數
[轉]多媒體封裝格式詳解---MP4
原文 https://www.cnblogs.com/jingzhishen/p/3698570.html 參考 http://www.cnblogs.com/ranson7zop/p/7889272.html MP4檔案格式詳解——結構概述 http://blog.
FFMPEG實現對AAC解碼(不採用封裝格式實現)
技術在於交流、溝通,轉載請註明出處並保持作品的完整性。 原文:https://blog.csdn.net/hiwubihe/article/details/81267872 [音訊編解碼系列文章] 音訊編解碼基礎 FFMPEG實現音訊重取樣 FFM
FFMPEG實現對AAC解碼(採用封裝格式實現)
技術在於交流、溝通,轉載請註明出處並保持作品的完整性。 原文:https://blog.csdn.net/hiwubihe/article/details/81261022 [音訊編解碼系列文章] 音訊編解碼基礎 FFMPEG實現音訊重取樣 FFM
FFMPEG實現PCM編碼(不採用封裝格式實現)
技術在於交流、溝通,轉載請註明出處並保持作品的完整性。 原文:https://blog.csdn.net/hiwubihe/article/details/81260923 [音訊編解碼系列文章] 音訊編解碼基礎 FFMPEG實現音訊重取樣 FFM
FFMPEG實現PCM編碼(採用封裝格式實現)
技術在於交流、溝通,轉載請註明出處並保持作品的完整性。 原文:https://blog.csdn.net/hiwubihe/article/details/81260882 [音訊編解碼系列文章] 音訊編解碼基礎 FFMPEG實現音訊重取樣 FFM
h264兩種封裝格式區別
annexb 一個Access Units(AU)包含一個幀,一幀畫面包含一個或多個NALU(Network Abstraction Layer Units) 為了位元組對齊,每個NALU有起始碼,其中4位元組的起始碼0x00000001通常標誌流的隨機訪問點SPS, PP
MP4封裝格式
一、簡介 MP4(MPEG-4 Part 14)是一種常見的多媒體容器格式,它是在“ISO/IEC 14496-14”標準檔案中定義的,屬於MPEG-4的一部分,是“ISO/IEC 14496-12(MPEG-4 Part 12 ISO base media file format)”標準中
視訊檔案格式--視訊封裝格式--視訊編碼格式區分
前言 什麼是影片?其實就是一組(很多張)圖片,時間間隔很小的連續展示出來,人們就覺得畫面中的人物在動,這就是影片。 那電影的實質就是N多張圖片的集合。那每張圖片和幀又有什麼關係呢? 事實上,如果一部影片裡面的圖片,我們原封不動的全部存起來,空間會很大很大很大,但是如果
ISO/IEC 15444-12 MP4 封裝格式標準摘錄 3
共享 允許 his 多個 更多 並且 stc 位置信息 run 目錄 Track Data Layout Structures Data Information Box Data Reference Box Sample Size Boxes Compact Sampl
ISO/IEC 15444-12 MP4 封裝格式標準摘錄 4
目錄 Movie Fragments Movie Extends Box Movie Extends Header Box Track Extends Box Movie Fragment Box Movie Fragment Header Box
iOS音視訊—FFmepg基礎知識:命令列工具使用&封裝格式&視訊編碼音訊編碼資料瞭解&視訊畫素音訊取樣資料格式
iOS音視訊相關目錄 FFmepg基礎知識 封裝格式 1、封裝格式:mp4、mov、flv、wmv等等… 2、作用:視訊流+音訊流按照格式進行儲存在一個檔案中 3、MPEG2-TS格式:傳輸流,又稱TS、TP、MPEG-TS或M2T,用於音效、影象與資料的通訊協議。屬於
IPSec 的兩種工作模式及其報文封裝格式
隧道(tunnel)模式:隧道模式保護所有 IP 資料並封裝新的 IP 頭部,不使用原始 IP 頭部進行路由。在 IPSec 頭部前加入新的 IP 頭部,源目為 IPSec peer 地址。並允許 RFC 1918(私有地址)規定的地址參與 VPN 穿越網際網路。 AH Tunnel mode
呼叫FFmpeg SDK解析封裝格式的視訊為音訊流和視訊流
我們平常最常用的音視訊檔案通常不是單獨的音訊訊號和視訊訊號,而是一個整體的檔案。這個檔案會在其中包含音訊流和視訊流,並通過某種方式進行同步播放。通常,檔案的音訊和視訊通過某種標準格式進行復用,生成某種封裝格式,而封裝的標誌就是檔案的副檔名,常用的有mp4/a
最簡單的基於FFmpeg的封裝格式處理 視音訊複用器 muxer
=====================================================最簡單的基於FFmpeg的封裝格式處理系列文章列表:=====================================================簡介打算記錄一