最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PMP格式詳解

 更新時(shí)間:2007年01月22日 00:00:00   作者:  
PMP格式詳解:著名的jonny設(shè)計(jì)了PMP格式,讓大家可以使用小P來(lái)欣賞到高質(zhì)量的影音; 
但隨著版本的推進(jìn),出現(xiàn)了PMP1.0, PMP2.0, PMP-AVC, 這些名詞和概念可能讓大家感到很困惑,現(xiàn)在,我根據(jù)我的研究和理解來(lái)給大家解釋一下這些名詞的意思。 

【PMP格式】 
PMP是jonny設(shè)計(jì)的視頻音頻封裝格式,如同AVI一樣,只是一種封裝的容器格式 
PMP格式現(xiàn)在只有兩個(gè)版本,一個(gè)是1.0, 一個(gè)是2.0 

PMP1.0是一個(gè)比較簡(jiǎn)陋的版本,只支持封裝MP4V流(xvid, divx)和MP3流(而且要求是CBR的,采樣率為44100), 
從文件頭開(kāi)始,順序結(jié)構(gòu)如下: 

4字節(jié):一定是"pmpm",pmp的標(biāo)志; 
4字節(jié):版本號(hào),為0,表示版本是1.0 
4字節(jié):視頻幀總數(shù) 
4字節(jié):視頻寬度 
4字節(jié):視頻高度 
4字節(jié):視頻scale 
4字節(jié):視頻rate , 注意:視頻的幀率fps = rate/scale 
4字節(jié):最大視頻幀的大小 
視頻幀總數(shù)×4個(gè)字節(jié):每幀視頻的索引,每個(gè)索引4個(gè)字節(jié),最低一個(gè)bit位表示是否關(guān)鍵幀,其余的31位bit表示幀的大小 
視頻數(shù)據(jù):字節(jié)數(shù),由上面的索引計(jì)算可以得出; 
4個(gè)字節(jié):音頻幀的數(shù)據(jù)大?。ㄓ捎诓捎玫氖莄br模式,所有的音頻幀數(shù)據(jù)大小一樣,但關(guān)鍵幀的大小比普通幀大小多一個(gè)字節(jié)) 
4個(gè)字節(jié):音頻幀的總數(shù) 
音頻幀總數(shù)×1個(gè)字節(jié):每幀音頻的索引,每個(gè)索引1個(gè)字節(jié),關(guān)鍵幀為1,普通幀為0,注意:每幀的實(shí)際大小=音頻幀的數(shù)據(jù)大小+索引值; 
音頻數(shù)據(jù):字節(jié)數(shù),由上面的索引計(jì)算得出; 

從上面的分析來(lái)看,PMP1.0格式有很大的不足,沒(méi)有視頻和音頻的標(biāo)志位,也就是說(shuō),固定死了視頻和音頻的編碼格式,無(wú)法封裝各式的流, 
同時(shí),由于視頻和音頻數(shù)據(jù)是非交錯(cuò)存儲(chǔ),播放程序在回放的時(shí)候,文件指針在來(lái)回地移動(dòng),讀視頻幀的時(shí)候移到前面,讀音頻幀又移到后面; 

PMP2.0開(kāi)始,jonny估計(jì)意識(shí)到1.0的不足,重新設(shè)計(jì)了文件的格式結(jié)構(gòu),我個(gè)人認(rèn)為這個(gè)改變很不錯(cuò): 
從文件頭開(kāi)始,順序結(jié)構(gòu)如下: 

4字節(jié):一定是"pmpm",pmp的標(biāo)志; 
4字節(jié):版本號(hào),為1,表示版本是2.0 
4字節(jié):視頻格式標(biāo)志,這是一個(gè)改進(jìn),為支持封裝各種視頻流提供保證,0表示MP4V流(xvid, divx),1表示AVC流(PMP-AVC其實(shí)就是PMP2.0格式,只不過(guò)封裝了AVC流) 
4字節(jié):視頻幀總數(shù) 
4字節(jié):視頻寬度 
4字節(jié):視頻高度 
4字節(jié):視頻scale 
4字節(jié):視頻rate , 注意:視頻的幀率fps = rate/scale 
4字節(jié):音頻格式標(biāo)志,同樣為了以后支持封裝各種音頻提供保證,現(xiàn)在只支持mp3流,該值為0; 
4字節(jié):包含的音頻流數(shù)量,為支持多音軌封裝提供了保證,如果一個(gè)pmp中封裝了兩條音軌,該值就為2 
4字節(jié):每幀視頻附帶的音頻幀的最大數(shù),由于PMP2.0采用了視頻音頻交錯(cuò)存儲(chǔ)的方式,一幀視頻和相應(yīng)的幾幀音頻放在一起,這是一個(gè)最大值; 
4字節(jié):音頻scale,默認(rèn)為1152 
4字節(jié):音頻rate,默認(rèn)為44100 
4字節(jié):音頻是否立體聲,0表示單聲,1表示立體聲; 
視頻幀總數(shù)×4個(gè)字節(jié):每幀視頻的索引,每個(gè)索引4個(gè)字節(jié),最低一個(gè)bit位表示是否關(guān)鍵幀,其余的31位bit表示幀的大?。ㄗ⒁?,這里的幀大小和1.0格式的幀大小不一樣,看下面的解釋?zhuān)?nbsp;
視頻音頻混和數(shù)據(jù):這里,jonny做了一個(gè)比較有意思的設(shè)計(jì),把1個(gè)視頻幀和其相應(yīng)的音頻幀混合起來(lái),當(dāng)做一個(gè)數(shù)據(jù)幀;那究竟怎么個(gè)混合法呢,我們分析一下: 
首先計(jì)算每個(gè)視頻幀的時(shí)間戳和每個(gè)音頻幀的時(shí)間戳,videotime = videonum / videofps , audiotime = audionum / audiofps (videonum和audionum都從0開(kāi)始) 
那么第一個(gè)視頻幀的時(shí)間戳就是0/videofps =0,而第二個(gè)視頻幀的時(shí)間戳就是1/videofps ,然后,把第一個(gè)視頻幀和所有時(shí)間戳小于1/videofps的音頻幀接在一起,成了一個(gè)數(shù)據(jù)幀,如此類(lèi)推下去; 
然后在每個(gè)數(shù)據(jù)幀的前面再加上n個(gè)字節(jié), n=1+4+4+4+4×每音軌被混合的幀數(shù)×音軌數(shù), 
其中這n個(gè)字節(jié)的意義如下: 
1字節(jié):本數(shù)據(jù)幀中,每音軌被混合的幀數(shù); 
4字節(jié):被混合的第一個(gè)音頻幀和視頻幀之間的時(shí)間差; 
4字節(jié):被混合的最后一個(gè)音頻幀和視頻幀之間的時(shí)間差; 
4字節(jié):視頻幀的大小; 
4×每音軌被混合的幀數(shù)×音軌數(shù):每個(gè)被混合的音頻幀的大小 

【PMP的播放】 
從上面的分析,我們知道,PMP有兩種格式(1.0,2.0),又由于2.0格式中封裝的流不一樣,出現(xiàn)了所謂pmp2.0和pmp-avc的不同; 
所有,我們需要不同的播放器(pmp-mod1, pmp-mod2, pmp-avc)來(lái)播放這些文件; 

由于pmp1.0和pmp2.0格式文件的差異太大,在小p上如果要實(shí)現(xiàn)同時(shí)支持這兩種的話,代碼編寫(xiě)會(huì)比較復(fù)雜,效率可能也會(huì)因此降低 
同時(shí)由于pmp1.0格式的不足,我建議大家放棄pmp1.0格式,原有的pmp1.0格式的片子可以通過(guò)remux轉(zhuǎn)成2.0格式; 
至于pmp-mp4v和pmp-avc文件,我個(gè)人認(rèn)為,他們是可以放在一個(gè)程序中支持的,因?yàn)樗麄兊姆庋b是一樣的,只是里面的流不一樣而已; 
只需要通過(guò)對(duì)不同解碼器的解碼即可。 

【后話】 
寫(xiě)這篇東西的目的就是希望能讓大家了解到pmp的各種格式的區(qū)別. 
我希望自己有時(shí)間和能力來(lái)給大家做一個(gè)pmp-mod,支持pmp2.0(包括pmp-mp4v,pmp-avc),但實(shí)際上,我現(xiàn)在的工作比較繁忙,沒(méi)有太多精力來(lái)編寫(xiě)這個(gè)。 
所以,寫(xiě)這個(gè)的另一個(gè)目的是分享我的研究,希望能有技術(shù)高手能通過(guò)這篇東西,寫(xiě)出一個(gè)新的pmp-mod,支持pmp2.0格式的播放(包括pmp-mp4v和pmp-avc)。

相關(guān)文章

最新評(píng)論

普宁市| 隆回县| 西林县| 大足县| 上犹县| 江源县| 连南| 惠来县| 安康市| 浮山县| 清流县| 方山县| 彭泽县| 工布江达县| 岳西县| 嘉祥县| 剑川县| 寻甸| 阳泉市| 葫芦岛市| 永清县| 奎屯市| 淮阳县| 双牌县| 淮南市| 南京市| 奎屯市| 日喀则市| 金昌市| 新疆| 阿拉善右旗| 简阳市| 凤山市| 赤城县| 麻阳| 祁东县| 乌鲁木齐县| 大邑县| 广州市| 海宁市| 尚义县|