1.FLV文件格式如下,由flv頭和一系列tag組成,tag又分為script tag、音頻tag、視頻tag。 PreviousTagSize表示上一個(gè)tag的大小,占位4Byte。
| FLV Header |
PreviousTagSize0 |
Tag1 |
PreviousTagSize1 |
Tag2 |
... |
- FLV Header由9個(gè)字節(jié)組成,說(shuō)明如下
| 字段名稱(chēng) |
字段大小 |
字段說(shuō)明 |
| Signature |
1Byte |
Signature byte always 'F' (0x46) |
| Signature |
1Byte |
Signature byte always 'L' (0x4C) |
| Signature |
1Byte |
Signature byte always 'V' (0x56) |
| Version |
1Byte |
flv版本號(hào) (一般為0x01表示版本1) |
| TyepFlagsReserved |
5bit |
保留位 |
| TypeFlagsAudio |
1bit |
音頻標(biāo)志位(1:存在音頻,0:不存在音頻) |
| TypeFlagsReserved |
1bit |
保留位 |
| TypeFlagsVideo |
1bit |
視頻標(biāo)志位(1:存在視頻,0:不存在視頻) |
| DataOffset |
4Byte |
FLV header 長(zhǎng)度(版本1為9) |
- tag是由Tag Header和Tag Data組成,不同類(lèi)型的Tag其TagHeader部分總是相同,共11個(gè)字節(jié)。我們可以根據(jù)TagType知道后續(xù)的tag是音頻還是視頻,根據(jù)TimeStamp來(lái)進(jìn)行視音頻同步。
|---------------------------------------------------------------Tag ------------------------------------------------|
|----------------------------------------------------------Tag Header---------------------------------------------|
| TagType |
DataSize |
TimeStamp |
TimeStampExt |
StreamId |
| 1Byte |
3Byte |
3Byte |
1Byte |
3Byte |
| 1-2bit位:必須為0,保留位;第3bit位: 0表示未加密,1表示加密,一般默認(rèn)0;4-8bit位:8:音頻、9:視頻、18:script數(shù)據(jù); |
Tag Data的長(zhǎng)度,不包括11字節(jié)的Tag Header |
時(shí)間戳,毫秒為單位,則意味著要將時(shí)間戳單位關(guān)系換算好;第一個(gè)tag時(shí),該值總是0 |
擴(kuò)展時(shí)間戳(當(dāng)時(shí)間戳不夠時(shí),當(dāng)做高8位,很少用) |
流id,總是0 |
-
flv文件第一個(gè)tag一般是script tag,script tag Header如下圖所示。scriptTag數(shù)據(jù)主要是文件的元數(shù)據(jù)信息Metdata,包括視頻時(shí)長(zhǎng)、分辨率、視頻幀率、碼率、音頻采樣大小等等信息。
- flv的音頻tag。
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。