360: Hemispherical to Equirectangular Video Filter

Converts a video frame with two hemispherical images to a single equirectangular frame. The plugin assumes that both hemispheres are in the frame. If you have a camera like the Garmin Virb360 that produces two videos, one from each camera, you should start by converting them to a single movie by placing them side by side using, for example, ffmpeg (you can also add parameters to produce lossless, intra-only output here for easier editing):

ffmpeg \
    -i left.mp4 \
    -i right.mp4 \
    -filter_complex hstack \
    output.mp4

Parameters

  • Interpolation: Nearest-neighbor or bilinear. Determines the sampling method.See also “Interpolation” in the Glossary / Terminology
  • Yaw, Pitch and Roll: The two fisheye cameras of a 360 camera are rarely perfectly 180 degrees apart. These parameters adds a rotation to both lenses to correct for this.
  • Projection: The fisheye projection type. Currently only equidistant fisheyes, like the Ricoh Theta and Garmin Virb360 are supported.
  • FOV and Radius: The field of view of a single hemisphere in degrees, and the radius of the image circle, expressed as a fraction of the frame width.
  • X, Y and Up: The image center and image orientation for the front- and back-facing camera. The X parameter is a fraction of the image width, and the Y parameter a fraction of the image height. Up is the “up” direction in the image, in degrees clockwise from a direction towards the frame top edge.
  • Nadir Radius and Nadir Start: 360 cameras like the Theta have a problem with the nadir direction where, no matter what, you will have a little of the camera in the image. This parameter “stretches” the image near nadir to cover up the missing parts.

Thank you for all you do to build Shotcut. It’s an amazing tool.

I’m trying to make sense of some video I captured on a Kodak PixPro Orbit360 4k camera. When recording in VR mode the front camera captures 155 Degrees, and the rear camera captures 235 degrees. Combined that’s 390 degrees so 30 degrees of overlap.

In the filter the closest I have come to getting something normal is by setting the following:
Alignment
Yaw 0
Pitch 0
Roll at 180,

Lens
FOV at 360
Radius .25 (default)

Front:
Front X at .3973 (155 degrees/390 degrees total)
Front Y at .3973
Up 90 degrees

Back
Back X at .6026 (235 degrees/390 degrees total)
Back Y at .6026
Up 90 degrees

Nadir
radius .2229 (default)
start .3 (default)

Unfortunately, the video isn’t correct. Any hints on adjusting or a pointer to a tutorial to learn more?

My goal is to upload it to You-Tube as a 360 video to share with family. They can’t all install the Kodak app.