日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

FLV文件格式(Z)(转载)

發(fā)布時間:2023/12/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FLV文件格式(Z)(转载) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
剛才在看一些關(guān)于demux的東西,在處理flv格式的文件的時候,由于自己對flv文件的格式不了解,所以就比較云頭轉(zhuǎn)向,正好看到了一篇講述flv文件格式的文章,寫的比較明白,所以就轉(zhuǎn)過來了。O(∩_∩)O~
flv頭文件比較簡單,由9個字節(jié)組成.

0-3:前3個字節(jié)是文件格式標(biāo)識(FLV 464C56).
4-4:第4個字節(jié)是版本(0x01)
5-5:第5個字節(jié)的前5個bit是保留的必須是0.
??? ???? 第5個字節(jié)的第6個bit音頻類型標(biāo)志(TypeFlagsAudio)
??? ???? 第5個字節(jié)的第7個bit也是保留的必須是0
??? ???? 第5個字節(jié)的第8個bit視頻類型標(biāo)志(TypeFlagsVideo)
6-9:第6-9的四個字節(jié)還是保留的.其數(shù)據(jù)為 00000009 .

文件內(nèi)容是由4字節(jié)的0 開始,它標(biāo)志著前一個tag的size(因為前一個tag為空,所以size為0).然后就是flv文件內(nèi)容的第1個tag。tag類型為1個字節(jié),有:8音頻;9視頻;18(0x12) 腳本數(shù)據(jù);其它保留。每種tag有其特定類型。
1:如下圖為data tag


data tags被flash player中的NetStream調(diào)用.一個meta包的內(nèi)容由兩個amf包組成.第一個(amf類型0x02)是基本上總是由2個字節(jié)帶字符串長度+ 字符串組成,第二個(amf類型0x08)是由一個數(shù)組組成,數(shù)組中的各個元素是由不同類型組成。(The SWF file format uses 8-bit, 16-bit, 32-bit, 64-bit, signed, and unsigned integer types. All integer values are stored in the SWF file by using?little-endian byte order.FLV files, unlike SWF files, store multibyte integers in big-endian byte order.)
data tags基本格式:


data tag數(shù)據(jù)組成(名字+數(shù)據(jù)):

上圖中的數(shù)據(jù)分析如下:
0x12 data tag的類型標(biāo)志.
000152 data tag的長度
000000 時間戳
00 時間戳擴展
000000 流id

0x02 data object的類型標(biāo)志
000A object name的長度
6F6E4D65746144617461 object name(onMetaData)
08 第二個amf. data array的類型標(biāo)志
0000000E 數(shù)組的長度
000D object name的長度
617564696F6461746172617465 object name(audiodatarate)
00 double類型數(shù)據(jù)標(biāo)志
404C354DDA204355 double類型的數(shù)據(jù)值

2:如下圖為?視頻tag
視頻 tags基本格式:


視頻tags的數(shù)據(jù):
/*----------------------------

幀類型 4bit
1: 關(guān)鍵幀keyframe(視頻中的關(guān)鍵幀,數(shù)據(jù)存儲的是整個畫面完整的數(shù)據(jù),可以提取它來生成圖片)
2: 中間幀inter frame(關(guān)鍵幀之間的狀態(tài),不完整的畫面數(shù)據(jù),需要依靠前面幀的數(shù)據(jù)生成)
3: 可任意使用的中間幀disposable inter frame(H.263 only)

視頻編碼id 4bit
2: Sorenson H.263(mencoder轉(zhuǎn)換所使用的視頻編碼)
3: Screen video
4: On2 VP6
5: On2 VP6 with alpha channel
6: Screen video version 2

視頻數(shù)據(jù)?
If CodecID = 2
H263VIDEOPACKET
If CodecID = 3
SCREENVIDEOPACKET
If CodecID = 4
VP6FLVVIDEOPACKET
If CodecID = 5
VP6FLVALPHAVIDEOPAC
KET
If CodecID = 6
SCREENV2VIDEOPACKET

3:如下圖為音頻tag
音頻tags基本格式:
/*---------------------------
tag數(shù)據(jù)大小 3個字節(jié)的音頻數(shù)據(jù)大小?
tag時間戳 3個字節(jié)tag數(shù)據(jù)應(yīng)用的時間(毫秒)
tag時間戳擴展 1個字節(jié)的時間戳擴展,讓時間戳變成4字節(jié),本字節(jié)作為時間戳的高位.
streamID 3個字節(jié)的類id,總是0
//-----------------------------------------------------------------------------------------------------------
音頻tags的數(shù)據(jù):
音頻格式的數(shù)據(jù)的組成如下:
音頻格式 4bit 0是未壓縮的,1是ADPCM,2是mp3,5是Nellymoser 8kHz,6是Nellymoser.
音頻率 2bit 0 = 5.5 kHz
?? 1 = 11 kHz
?? 2 = 22 kHz
?? 3 = 44 kHz
音頻大小 1bit 0 = snd8Bit
?? 1 = snd16Bit
音頻類型 1bit 0 = sndMono
?? 1 = sndStereo
音頻數(shù)據(jù) 1個字節(jié)的音頻數(shù)據(jù)大小,不同的音頻數(shù)據(jù)格式

Nellymoser 8kHz 是一個特殊的類型—8kHz取樣率在其它格式中不被支持.當(dāng)音頻的格式是Nellymoser 8kHz mono的時候,聲音率和聲音類型被忽略了. 對于其它的 Nellymoser取樣率,音頻格式和音頻率照常.
參考資料:
flv文件格式解讀:www.roading.net/blog/post_102.html
flv相關(guān)資源:blog.csdn.net/everlastinging/archive/2007/12/15/1939117.aspx
SWF and FLV File Format Specification License Agreement(flv格式文檔下載):www.adobe.com/licensing/developer/fileformat/license/

總結(jié)

以上是生活随笔為你收集整理的FLV文件格式(Z)(转载)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。