Injecting/embedding/adding/writing metadata to a .mp4 file so it's recognised as 360

Video Production Asked by TrueCP5 on October 28, 2021

I’m working on a library that injects/embeds/writes metadata into a .mp4 file to allow the video to be displayed correctly as a 360 video. The input file is a standard .mp4 file in the equirectangular format which I need to inject the proper metadata to get it to display as a 360 video. I know tools like Google’s Spatial Media Tool exist but if possible I would like to do it with FFmpeg.

The metadata injected by the Spatial Media tool looks like this and is what I am trying to achieve:

<?xml version="1.0"?><rdf:SphericalVideo
xmlns:GSpherical=""><GSpherical:Spherical>true</GSpherical:Spherical><GSpherical:Stitched>true</GSpherical:Stitched><GSpherical:StitchingSoftware>Spherical Metadata Tool</GSpherical:StitchingSoftware><GSpherical:ProjectionType>equirectangular</GSpherical:ProjectionType></rdf:SphericalVideo>

These are all the things I have tried which did not work:

Method 1

ffmpeg -i input.mp4 -movflags use_metadata_tags -metadata Spherical=true -metadata Stitched=true -metadata ProjectionType=equirectangular -metadata StitchingSoftware=StreetviewJourney -codec copy output.mp4

I have tried many variations of it like adding GSpherical: and xmp: to the metadata tag.

Method 2

When I extract the metadata using ffmpeg it contains the spherical tag in the logs but not when I output it to a ffmetadata file. This was the command I used: ffmpeg -i injected.mp4 -map_metadata -1 -f ffmetadata data.txt

This is the output of the log:

 fps, 60 tbr, 15360 tbn, 120 tbc (default)
      handler_name    : VideoHandler
    Side data:
      spherical: equirectangular (0.000000/0.000000/0.000000)

Method 3

I also tried to get the metadata using this command: ffprobe -v error -select_streams v:0 -show_streams -of default=noprint_wrappers=1 injected.mp4

This was the logs it outputted:

side_data_type=Spherical Mapping

I then tried to use this command but it didn’t work:

ffmpeg -i chapmanspeak.mp4 -movflags use_metadata_tags -metadata side_metadata_type="Spherical Mapping" -metadata projection=equirectangular -metadata yaw=0 -metadata pitch=0 -metadata roll=0 -codec copy output.mp4

2 Answers

you can try something like this if you just want to transcode instead of writing metadata freshly into the file

sudo ffmpeg -i 360video.MP4 -vcodec libx264 -strict unofficial -vprofile high  -acodec aac -f mp4  another.mp4

Answered by Ram on October 28, 2021

Metadata is not the same as frame side data. FFmpeg tool currently cannot do this, you need to program own thing using available API.

Answered by user12174 on October 28, 2021

Add your own answers!

Related Questions

What causes a loud tone/noise in Blackmagic ATEM talkback?

1  Asked on December 31, 2021 by totymedli


Reimport exported file and make all the cuts same

1  Asked on December 28, 2021 by azz-kawa


Save video track names as a preset

1  Asked on December 28, 2021


clean HDMI output camera – on start

2  Asked on December 26, 2021 by mk


Adding separate WebVTT files to FFmpeg HLS muxer

0  Asked on December 10, 2021 by t_bmn


Record video to timeline during playback

2  Asked on December 6, 2021 by rjgmore


VHS Wobble After Effects

1  Asked on November 16, 2021 by kurajber


Find duration only with ffprobe in Windows

1  Asked on November 16, 2021 by k7aay


Ask a Question

Get help from others!

© 2022 All rights reserved. Sites we Love: PCI Database, MenuIva, UKBizDB, Menu Kuliner, Sharing RPP