前期準備:
ffmpeg3.2.10:http://ffmpeg.org/download.html#releases
Transform360:https://github.com/facebook/transform360
其中,ffmpeg有三種壓縮包格式,任取一種就行了,我選的gz
不同格式對應不同解壓方法,三種格式的解壓方法分別是
gz 格式:tar -zxvf ffmpeg-3.2.10.tar.gz
xz 格式:tar -xvJf ffmpeg-3.2.10.tar.xz
bz2格式:tar -jxvf ffmpeg-3.2.10.tar.bz2
而對於transform360插件,下載一個zip格式壓縮包,拷貝進系統就好了
zip格式:unzip transform360-master.zip
在桌面建立360文件夾,存放兩個壓縮包(個人喜好)
Ubuntu16.04上的安裝工作
在https://github.com/facebook/transform360上還是有相關步驟的,我在此進行一定的演示操作。
1、安裝ffmpeg,OpenCV的dev版本和編解碼器庫,操作如下
sudo apt-get install ffmpeg
sudo apt-get install libopencv-dev
sudo apt-get install nasm libxvidcore-dev libass-dev libfdk-aac-dev libvpx-dev libx264-dev
2、安裝完畢後切換到transform360所在文件夾下,我的是在桌面/360中
指令:
unzip transform360-master.zip解壓
cd transform360-master進入文件
cd Transform360進入transform360所在文件夾下
cmake ./
(發現出錯,cmake尚未安裝,按照所說安裝cmake)
指令:
sudo apt install cmake
cmake ./
make
sudo make install
3、複製Transform360文件夾下vf_transform360.c到libavfilter在ffmpeg源中的子目錄。
首先解壓,再複製
指令:
返回到ffmpeg-3.2.10.tar.gz所在文件夾下(我是cd ..和cd ..)
tar -zxvf ffmpeg-3.2.10.tar.gz
4、編輯libavfilter/allfilters.c並通過在視頻篩選器註冊部分中添加以下行來註冊該過濾器:
將代碼REGISTER_FILTER(TRANSFORM360, transform360, vf);複製進去
5、編輯libavfilter/Makefile並將篩選器添加到Filter部分中的以下行:
OBJS-$(CONFIG_TRANSFORM360_FILTER) += vf_transform360.o
6、編輯vf_transform360.c在libavfilter文件夾
這兩行代碼
#include "transform360/VideoFrameTransformHandler.h"
#include "transform360/VideoFrameTransformHelper.h"
改爲
#include "Transform360/Library/VideoFrameTransformHandler.h"
#include "Transform360/Library/VideoFrameTransformHelper.h"
7、在源文件夾中配置ffmpeg:
指令:
(用cd進入ffmpeg-3.2.10文件夾)
./configure --prefix=/usr/local/transform/ffmpeg --enable-gpl --enable-nonfree --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libvpx --enable-libx264 --enable-libxvid --enable-libopencv --extra-libs='-lTransform360 -lstdc++'
如圖,再用指令
make
make install (root權限)
完成安裝
運行
將input.mp4放入ffmpeg-3.2.10中
打開終端,進入ffmpeg-3.2.10文件,用指令
./ffmpeg -h filter=transform360
然後用指令
./ffmpeg -i input.mp4 -vf transform360="input_stereo_format=2:cube_edge_length=1024:interpolation_alg=cubic:enable_low_pass_filter=1:enable_multi_threading=1:num_vertical_segments=15:adjust_kernel=1" output.mp4
注意:
參數示例:
ffmpeg -i input.mp4
-vf transform360 = “ input_stereo_format = MONO
:cube_edge_length = 512
:interpolation_alg = cubic
:enable_low_pass_filter = 1
:enable_multi_threading = 1
:num_horizo_ntal_segments = 32
:num_vertical_segments = 15
:adjust_kernel = 1 ”
output.mp4
含義:
cube_edge_length:立方體邊的長度(對於三次變換,覆蓋w和h,默認爲0)(從0到16384)(默認值爲0)
interpolation_alg:插值算法(從0到4)(默認CUBIC)
enable_low_pass_filter:啓用基於低通濾波器的抗鋸齒(從0到1)(默認1)
enable_multi_threading:啓用多線程以加快基於低通濾波器的抗混疊(從0到1)(默認值爲1)
num_horizo_ntal_segments:每個平面平面的水平段數(從1到500)(默認1)
num_vertical_segments:每幀平面垂直段的數量(從2到500)(默認5)
adjust_kernel:啓用內核調整(從0到1)(默認值爲1)
如圖,就開始投影轉換啦
轉換後就會在目錄下生產output.mp4
原視頻:
轉換後視頻: