Linux下ffmpeg添加Facebook/transform代碼塊實現(xiàn)將全景視頻的球模型轉(zhuǎn)換成立方體模型
Facebook事實上已開始在平臺中支持360度全景視頻的流播,但公司對此并不滿足极祸。其工程師更是基于錐體幾何學(xué)設(shè)計出了一套全新的視頻編碼,號稱最高能將全景視頻的文件大小減少80%浴捆。(VR最新突破:全景視頻壓縮率達(dá)80%稿械,即將普及爆發(fā))
1、Facebook開源了其將2:1球模型視頻轉(zhuǎn)換成立方體模型的代碼
?https://github.com/facebook/transform
README:
1# Transform?
2?
3Transformisa video filter that transforms360videoin equirectangular projection into a cubemap projection?
4?
5## Building?
6?
7Transformisimplementedas an ffmpeg video filter. To build Transform, follow these steps:?
8
?9? 1. Checkout the sourcefor ffmpeg
10? 2. Copy `vf_transform.c` to the libavfilter subdirectoryin ffmpeg source
11? 3. Edit `libavfilter/allfilters.c` and register the filter by adding the line: `REGISTER_FILTER(TRANSFORM, transform, vf);`in the video filter registration section
12? 4. Edit `libavfilter/Makefile` and add the filter to adding the line: `OBJS-$(CONFIG_TRANSFORM_FILTER) += vf_transform.o`in the filter section
13? 5. Configure and build ffmpegas usual
14
15## Running
16
17Checkoutthe optionsforthe filter by running `ffmpeg -h filter=transform`
18A typical execution would be something like `ffmpeg -i input.mp4 -vf transform=input_stereo_format=MONO:w_subdivisons=4:h_subdivisons=4:max_cube_edge_length=512`
2梯捕、facebook/transform代碼實現(xiàn)淺析
2.1傀顾、據(jù)facebook稱將球模型轉(zhuǎn)成立方體模型科技減少25%的數(shù)據(jù)量
2.2短曾、轉(zhuǎn)換成四棱錐可以減少80%的數(shù)據(jù)量赐劣,但這部分代碼沒有開源。
2.3椭岩、現(xiàn)有球模型是怎么展開成2:1的視頻的判哥,以地球儀和世界地圖為例:
2.4塌计、根據(jù)其開源代碼在linux下用ffmpeg實現(xiàn)的結(jié)果侯谁,實現(xiàn)方法參見:Linux下編譯ffmpeg并用GDB調(diào)試以及根據(jù)README修改相應(yīng)源碼
2.5热芹、立方體展開成十字形的結(jié)果:
2.6惨撇、源碼的轉(zhuǎn)換核心是坐標(biāo)之間的轉(zhuǎn)換,即怎么把球模型上的點和立方體對應(yīng)以來报腔,其實現(xiàn)方法是給定立方體模型上的坐標(biāo)剖淀,根據(jù)坐標(biāo)算出α和β(可以想成極坐標(biāo),水平一圈360度翻诉,上下180度);α米丘、β分別除以360度和180度,按比例找出在球上對應(yīng)的點(在2:1視頻中的像素點)吁津。
2.7碍脏、以正前方這個面為例:
2.8稍算、將坐標(biāo)轉(zhuǎn)換成在空間內(nèi)的立方體坐標(biāo)(qx,qy钾埂,qz)科平;qz表示球心(立方體中心)到前方平面的距離
2.9、轉(zhuǎn)換成(tx髓考,ty弃酌,tz)是考慮到視線可能移動,正前方的面也變了查蓉,但此處默認(rèn)(y多柑,p)都為0;故坐標(biāo)不變
2.10、在立體空間內(nèi)算出(α初嘹,β)沮趣,α是水平偏向角,范圍:(-180度驻龟,180度);β是豎直偏向角类溢,范圍:(-90度露懒,90度)
2.11、算出(α蛇耀,β)角度坎弯,就可以根據(jù)比例得到對應(yīng)在2:1視頻中相應(yīng)的像素點
文末也給大家抠忘,分享主要有C/C++,Linux衰抑,Nginx荧嵌,ZeroMQ,MySQL啦撮,Redis,fastdfs愉择,MongoDB织中,ZK,流媒體层坠,CDN刁笙,P2P谦趣,K8S前鹅,Docker峭梳,TCP/IP,協(xié)程延赌,DPDK技術(shù),面試技巧方面的資料技術(shù)討論者蠕。
感興趣的朋友可以加群:812855908