不說不知,早一兩年流行過的VR/3D視頻片的格式還真不少,比較「通用」的有所謂左右格式SBS (side-by-side)的VR格式。基本上就是有魚眼效果、左右兩個畫面以微小角度模擬肉眼角視,再通過Oculus Rift或Google Daydream等虛擬現實頭戴式顯示設備播放,用戶抬頭、左右活動去看不同角度的虛擬現實。
一條「1080p」的VR片很可能是由兩條套用了魚眼鏡扭曲了的正方形視頻影片合成,像SBS的話,就可能是2160 pixels × 1080 pixels (左右各1080寬,雙加,高1080)。
如果有一條這樣的VR視頻影片,如何逆轉換成普通播放器可以正常播放的「單邊」2D影片?
免費的FFmpeg可以幫到大家!
這篇,會收錄如果用FFmpeg去裁切corp掉影片的看視解析度,和去魚眼效果(至少是減低吧)。
首先是選擇要左還是右。
如果是選擇要左的方格,就是要x,y分別為0,0開始,向右伸延1080、向下伸延1080,其餘棄之。
ffmpeg -i input.mp4 -filter:v "crop=1080:1080:0:0" output.mp4
如果是選擇要左的方格,就是要x,y分別為1081,0開始,向右伸延1080、向下伸延1080,其餘棄之。
ffmpeg -i input.mp4 -filter:v "crop=1080:1080:1081:0" output.mp4
當得到一條只有「單邊」影片後,就要處理魚眼了。
去除魚眼效果(實質上只是減少魚眼效果)的濾鏡「-vf」是「lenscorrection」。
格式是: ffmpeg -i input.mp4 -vf "lenscorrection=cx=0.47:cy=0.54:k1=-.33:k2=0.01" output.mp4
是靠調整「cx」、「cy」、「k1」、「k2」的數值去處理。
不同鏡頭拍出來的扭曲程度都各有不同,只能用試錯法 trial and error去看看效果了。可能先用舊文《以FFMPEG的指令碼作簡單剪片》的方式,先剪一分鐘、幾十秒的短片出來試試才套用到整條片上面。
下面收錄了幾款去除魚眼效果設定:
For GoPro 2
ffmpeg -i input.mp4 -vf "lenscorrection=cx=0.5:cy=0.5:k1=-0.227:k2=-0.022" output.mp4
For GoPro 3+, 16:9 with FOV Wide
ffmpeg -i input.mp4 -vf "lenscorrection=0.5:0.5:-0.335:0.097" output.mp4
For GoPro Hero 5 & 6:
ffmpeg -i input.mp4 -vf 'lenscorrection=k2=0.006:k1=-0.18' output.mp4
不喜歡CLI或者慊試錯法太麻煩的話,錢是可以解決問題的。有個叫「VideoProc」的收費視頻處理軟件,同時有Windows和Mac版,可以用GUI輕鬆搞定本篇文章甚至先前幾篇FFmpeg文章的工作。減價時索價美金$30 (一年授權)或終生授權美金$43 (原價美金$79)!
幾十塊美金,幾舊水港紙,這筆花不花就請看倌自行決定了。
減/去魚眼 (stackoverflow.com)
Is there a way to remove GoPro fisheye using ffmpeg
用ffmpeg裁切影片 (linuxuprising.com)
FFmpeg: How To Crop Videos, With Examples