저는 insta 360 x3을 사용하고 있으며 Linux에서 스튜디오 도구를 사용하지 않고 비디오 내보내기를 자동화하고 싶습니다.
다음은 카메라의 비디오 형식에 대한 스크린샷입니다(Insta360 x3 카메라 스크린샷).
ffmpeg를 사용하여 다음 명령으로 비디오 피드를 풀고 있습니다. (이 stackoverflow 답변에서 가져옴)
ffmpeg -y -i input.lrv -vf v360=dfisheye:e:yaw=-90 -c:v libx265 -b:v 40000k -bufsize 5000k -preset ultrafast -c:a copy -t 10 test.mkv
명령이 작동하고 제대로 작동하지만 렌즈 중 하나의 윤곽이 흐릿하고 시야가 더 높습니다. 그 결과 다음과 같은 이미지가 생성됩니다.
ffmpeg 명령 후 Insta360 x3 카메라 스크린샷 이미지:
퍼즈를 제거하기 위해 두 렌즈를 몇 픽셀씩 겹치거나 겹치는 시야를 잘라내도록 ffmpeg 명령을 변경하는 방법이 있습니까?
답변1
사용 중인 명령은 기본 매개변수를 사용합니다. 즉, 카메라의 FOV=180이고 완벽하게 수평이라고 가정합니다.
몇 가지 실험을 한 후이 장소실제 FOV는 193°인 것으로 나타났습니다. 하지만 그것만으로는 충분하지 않습니다. 물론 카메라를 완벽하게 수평으로 잡는 것은 불가능하므로 피치와 롤을 보정해야 합니다.
내가 받은 마지막 명령은 다음과 같습니다.
ffmpeg -i dfisheye.jpg -filter_complex "[0:v]v360=input=dfisheye:output=equirect:pitch=-22:roll=-20:ih_fov=193:iv_fov=193[out_v]" -map "[out_v]" out.gif
또는 다음 구문을 사용합니다.
ffmpeg -y -i input.lrv -vf v360=dfisheye:e:pitch=-22:roll=-20:ih_fov=193:iv_fov=193 -c:v libx265 -b:v 40000k -bufsize 5000k -preset ultrafast -c:a copy -t 10 test.mkv
내가 얻는 이미지는 다음과 같습니다.
혼동하지 않도록 주의하세요ih_fov~와 함께h_fov그리고iv_fov~와 함께v_fov.
카메라에 적합한 FOV를 찾으면 모든 사진에서 동일하게 유지되지만 PICTH와 ROLL은 사진마다 다릅니다. 완벽하게 수평인 사진이 이러한 격자에 들어갈 것이라고 생각하십시오.
피치와 롤을 보상하지 않은 이미지:
답변2
이 스크립트는 렌즈 비네팅이 어두워진 스티치 가장자리를 수정하지 않습니다. 출력 파일을 NEW.mp4
사진 확장자로 변경하면 NEW.jpg
삭제하지 않고는 사진이 전달되지 않습니다 libx264 -preset ultrafast
.
H 값은 비디오의 높이입니다. 입력 비디오 높이를 설정해야 합니다. FOV는 카메라 FOV로 설정되어야 합니다.
C 값은 두 이미지가 겹치는 지점에서 블렌딩되는 픽셀 수입니다.
@echo off
REM split the input and pitch one to level them - hstack the two streams to the output
set "FOV=189.1" :: Horizontal and vertical field of view of the fisheye lenses in degrees, normal 189.1
set "H=1920" ::Height of video
set "C=2" :: Width of interpolation band in degrees, must be smaller or equal than (FOV-180 ), normal is 2
set "RL=0" ::Roll (neg cockwise/counter clockwise pos) angle to change perspective in Left Equirectangular image
set "PL=0" ::Pitch (pos down/up neg) angle degrees to boundary to change perspective in Left Equirectangular image
set "YL=0" ::Yaw (pos left/right neg) angle degrees to change perspective in Left Equirectangular image, normal is -1
set "RR=0" ::Roll (neg cockwise/counter clockwise pos) angle to change perspective in Right Equirectangular imag, normal 1
set "PR=0" ::Pitch (pos down/up neg) angle degrees to boundary to change perspective in Right Equirectangular image
set "YR=0" ::Yaw (pos left/right neg) angle degrees to change perspective in Right Equirectangular image MUST NOT BE POSITIVE AS GREATER THAN 180 NOT POSSIBLE
REM Create the mergemap file
ffmpeg -f lavfi -i nullsrc=size=%H%x%H% -vf "format=gray8,geq='clip(128-128/%C%*(180-%FOV%/(%H%/2)*hypot(X-%H%/2,Y-%H%/2)),0,255)',v360=input=fisheye:output=e:ih_fov=%FOV%:iv_fov=%FOV%" -frames:v 1 -y mergemap.png
REM Convert file Dual_Feye to equirectangular projection
ffmpeg -i %1 -i %FF%mergemap.png -lavfi "[0]format=rgb24,split[a][b];[a]crop=ih:iw/2:0:0,v360=input=fisheye:output=e:ih_fov=%FOV%:iv_fov=%FOV%:yaw=%YL%:pitch=%PL%:roll=%RL%[c];[b]crop=ih:iw/2:iw/2:0,v360=input=fisheye:output=e:yaw=180+%YR%:pitch=%PR%:roll=%RR%:ih_fov=%FOV%:iv_fov=%FOV%[d];[1]format=gbrp[e];[c][d][e]maskedmerge" -c:v libx264 -preset ultrafast -q:v 1 -y NEW.mp4