Estoy usando una insta 360 x3 y me gustaría automatizar la exportación de videos sin usar sus herramientas de estudio en Linux.
Aquí hay una captura de pantalla de un formato de video en la cámara (captura de pantalla de la cámara Insta360 x3):
Estoy usando ffmpeg para desenvolver el video con el siguiente comando: (tomado de esta respuesta de 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
El comando funciona y hace un trabajo decente, pero una de las lentes tiene un campo de visión más alto con un contorno borroso. Esto da como resultado la siguiente imagen:
Imagen de la captura de pantalla de la cámara Insta360 x3 después del comando ffmpeg:
¿Hay alguna manera de cambiar el comando ffmpeg para superponer ambas lentes un par de píxeles para eliminar la pelusa o recortar el campo de visión superpuesto?
Respuesta1
El comando que estás utilizando utiliza parámetros predeterminados, lo que significa que asume que tus cámaras tienen FOV=180 y están perfectamente horizontales.
Después de algunos experimentos coneste sitioDescubrí que el campo de visión real es de 193°; pero eso no es suficiente: por supuesto, es imposible mantener la cámara perfectamente horizontal, por lo que hay que compensar el cabeceo y el balanceo.
El comando final que obtuve es:
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
O, usando su sintaxis:
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
La imagen que me sale es:
Presta atención para no confundirih_fovconh_fovyiv_fovconv_fov.
Tenga en cuenta que una vez que encuentre el FOV adecuado para su cámara, seguirá siendo el mismo para todas sus fotos, pero PICTH y ROLL serán diferentes para cada foto; Considere que una foto perfectamente horizontal encajaría en dicha cuadrícula:
Tu imagen sin compensar el cabeceo y el balanceo:
Respuesta2
Esta secuencia de comandos no corregirá el viñeteado de lentes en el borde de puntada oscurecido. Cambiar el archivo de salida NEW.mp4
a la extensión de foto NEW.jpg
no pasará la foto sin eliminarla libx264 -preset ultrafast
.
El valor H es la altura del vídeo. Debe configurar la altura del video de entrada. El FOV debe configurarse según el FOV de su cámara.
El valor C es el número de píxeles de fusión entre las dos imágenes donde se superponen.
@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