Ich verwende eine Insta 360 x3 und möchte den Export von Videos automatisieren, ohne die Studio-Tools unter Linux zu verwenden.
Hier ist ein Screenshot eines Videoformats in der Kamera (Screenshot der Insta360 x3-Kamera):
Ich verwende ffmpeg, um den Video-Feed mit dem folgenden Befehl auszupacken: (entnommen aus dieser Stackoverflow-Antwort)
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
Der Befehl funktioniert und macht einen ordentlichen Job, aber eine der Linsen hat ein größeres Sichtfeld mit einem unscharfen Umriss. Daraus ergibt sich das folgende Bild:
Bild des Screenshots der Insta360 x3-Kamera nach dem ffmpeg-Befehl:
Gibt es eine Möglichkeit, den ffmpeg-Befehl so zu ändern, dass entweder beide Linsen um ein paar Pixel überlappen, um die Unschärfe zu entfernen, oder das überlappende Sichtfeld ausgeschnitten wird?
Antwort1
Der von Ihnen verwendete Befehl verwendet Standardparameter. Dies bedeutet, dass davon ausgegangen wird, dass Ihre Kamera ein Sichtfeld von 180 Grad hat und perfekt horizontal ist.
Nach einigen Experimenten mitDiese SeiteIch habe festgestellt, dass das tatsächliche Sichtfeld 193° beträgt. Aber das reicht nicht: Natürlich ist es unmöglich, die Kamera perfekt horizontal zu halten, daher muss man Nick- und Rollbewegungen ausgleichen.
Der letzte Befehl, den ich erhalten habe, ist:
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
Oder mit Ihrer Syntax:
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
Das Bild, das ich erhalte, ist:
Achten Sie darauf, nicht zu verwechselnih_fovmith_fovUndiv_fovmitv_fov.
Bitte beachten Sie, dass das richtige Sichtfeld für Ihre Kamera für alle Ihre Fotos gleich bleibt, BILD und ROLLE jedoch bei jedem Foto unterschiedlich sind. Bedenken Sie, dass ein perfekt horizontales Foto in ein solches Raster passen würde:
Ihr Bild ohne Nick- und Rollkompensation:
Antwort2
Dieses Skript korrigiert keine durch die Linse hervorgerufene Vignettierung und verdunkelt die Stichkante. Wenn Sie die Ausgabedatei NEW.mp4
in die Erweiterung „photo“ ändern NEW.jpg
, wird „photo“ nicht weitergeleitet, ohne dass die Datei gelöscht wird libx264 -preset ultrafast
.
Der Wert H ist die Höhe des Videos. Sie müssen die Höhe Ihres Eingangsvideos einstellen. Das Sichtfeld sollte auf das Sichtfeld Ihrer Kamera eingestellt werden.
Der C-Wert ist die Anzahl der Pixel der Überblendung zwischen den beiden Bildern an der Überlappungsstelle.
@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