Linux下ffmpeg添加Facebook/transform代码块实现将全景视频的球模型转换成立方体模型...

Linux下ffmpeg添加Facebook/transform代码块实现将全景视频的球模型转换成立方体模型

Facebook事实上已开始在平台中支持360度全景视频的流播,但公司对此并不满足。其工程师更是基于锥体几何学设计出了一套全新的视频编码,号称最高能将全景视频的文件大小减少80%。(VR最新突破:全景视频压缩率达80%,即将普及爆发)

a0a7a80510974eb7aa8837676201e487

 

 

 

 

1、Facebook开源了其将2:1球模型视频转换成立方体模型的代码

    https://github.com/facebook/transform

README:

 

b729cabf1e04446a835be6575cfebe31

 

 

 

 

1 # Transform
 2 
 3 Transform is a video filter that transforms 360 video in equirectangular projection into a cubemap projection
 4 
 5 ## Building
 6 
 7 Transform is implemented as an ffmpeg video filter. To build Transform, follow these steps:
 8 
 9 1. Checkout the source for ffmpeg
10 2. Copy `vf_transform.c` to the libavfilter subdirectory in 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 ffmpeg as usual
14 
15 ## Running
16 
17 Check out the options for the filter by running `ffmpeg -h filter=transform`
18 A 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`

 

b729cabf1e04446a835be6575cfebe31

 

 

 

 

2、facebook/transform代码实现浅析

2.1、据facebook称将球模型转成立方体模型科技减少25%的数据量

383c10b8431a43d6bd0f2ef6c4d02d49

 

 

 

 

2.2、转换成四棱锥可以减少80%的数据量,但这部分代码没有开源。

773eccb6644d4891a252732cd52ec516

 

 

 

 

2.3、现有球模型是怎么展开成2:1的视频的,以地球仪和世界地图为例:

27db5a9e96434bcbaaacf7429d27a174

 

 

 

 

2.4、根据其开源代码在linux下用ffmpeg实现的结果,实现方法参见:Linux下编译ffmpeg并用GDB调试 以及根据README修改相应源码

7c28da78175a4eaa8876e755b6098653

 

 

 

 

38c38711d23a454582c773ecfbf4e221

 

 

 

 

f81c4ca0e8964eec98e047e0d1d5132f

 

 

 

 

2.5、立方体展开成十字形的结果:

12b43cfe378742fc8a2efe62fabb6246

 

 

 

 

2.6、源码的转换核心是坐标之间的转换,即怎么把球模型上的点和立方体对应以来,其实现方法是给定立方体模型上的坐标,根据坐标算出α和β(可以想成极坐标,水平一圈360度,上下180度);α、β分别除以360度和180度,按比例找出在球上对应的点(在2:1视频中的像素点)。

2659fdd7fbbc4daba66782d0d90aabee

 

 

 

 

2.7、以正前方这个面为例:

a04bc2d2f3824a6d86a57a0f1129d953

 

 

 

 

2.8、将坐标转换成在空间内的立方体坐标(qx,qy,qz);qz表示球心(立方体中心)到前方平面的距离

f17a8caca6b5412cb8c50987b1c2e94b

 

 

 

 

2.9、转换成(tx,ty,tz)是考虑到视线可能移动,正前方的面也变了,但此处默认(y,p)都为0;故坐标不变

6ff86e96195b47198e8c0036d1737196

 

 

 

 

2.10、在立体空间内算出(α,β),α是水平偏向角,范围:(-180度,180度);β是竖直偏向角,范围:(-90度,90度)

26b9b52667d34da79dedf07fde9901b7

 

 

 

 

2.11、算出(α,β)角度,就可以根据比例得到对应在2:1视频中相应的像素点

acd47c76859440658cf3de19b8103377

 

 

 

 

8b49c6c05f0d41ba86d606571e52473e

 

 

 

文末也给大家,分享主要有C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK技术,面试技巧方面的资料技术讨论。

感兴趣的朋友可以加群:812855908

转载于:https://my.oschina.net/u/3997182/blog/3078884

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值