使用FFmpeg进行360全景视频格式转换:filter v360
使用FFmpeg filter v360 进行全景视频格式转换
1. FFmpeg v360介绍
FFmpeg在目前最新版4.3中加入了一个新的filter v360,功能是对不同投影格式的360度全景视频做格式转换。在此之前据我了解只有很多小的第三方的实现,现在FFmpeg终于加入了这个功能。
官方文档: FFmpeg v360 filter.
2. 用法和参数
官方示例:实现从ERP到立方体的转换:
ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
解释一下参数的含义:
最基本的参数格式如下:
v360=input_format:output_format
其中input_format和output_format分别是原始投影格式和目标投影格式。
e: ERP 投影格式
c: 立方体投影格式
c3x2: c后面加3x2指的是输出立方体视频的排列方式。目前支持三种:3x2, 1x6, 6x1
如果对于输入输出中的格式还有额外的参数要求,使用如下格式:
v360=input_format:output_format:format_1:arg_name=value
这里format_1指某个你要具体设置的格式,在冒号后面用arg_name= value的格式加具体参数。
在这个官方示例中,对于立方体还有额外的参数设置: cubic:out_pad=0.01, 这个是指立方体每个面要向外padding的像素数量是边长的1%。具体实现方式还不清楚。
3. v360支持的视频格式
全部支持的格式可以参考文档,这里总结几个我常用的格式。
Format argument | Full name | Notes |
---|---|---|
‘e’, ‘equirect’ | Equirectangular | |
‘c3x2’, ‘c6x1’, ‘c1x6’ | Cubemap with 3x2/6x1/1x6 layout | 大量额外设置可选 |
‘eac’ | Equi-Angular Cubemap | |
‘tsp’ | Truncated square pyramid |
4. 立方体(cubemap)额外参数设置
4.1 Padding
4.2 设置不同面输出顺序
使用参数out_forder设置六个用何种顺序排列。对于c3x2, 各个面按从左到右,从上到下排列:
举例:
ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_forder='rludfb' output.mkv
这个命令是指立方体的六个面按right, left, up, down, front, back的顺序输出。这个也是默认顺序。
注意,如果输入的视频不是默认顺序,则需要用in_forder来声明输入的顺序。举例:
ffmpeg -i input.mkv -vf v360=c3x2:e:cubic:in_forder='rludfb' output.mkv
4.3 分别设置每个面的旋转角度
使用参数in_frot和out_frot设置每个面的顺时针旋转角度。举例:
ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_frot='000012' output.mkv
这个命令会将输出的第五个面旋转90度,第六个面旋转180度。
默认是’000000’, 使用0 1 2 3 代表0 90 180 270度的旋转
本文地址:https://blog.csdn.net/qiutiantxwd/article/details/107283224