I hope that when they release the MAX 3 in 2042 that it’s as good as the Google street view cameras are now :V
And enforcing bylaws will be done by robots.
So I’ve downloaded the sample .360 file from the dropbox link to see if my current workflow and programs work correctly with the MAX 2 files. Unfortunately, the UL2GSV GOPRO2GPX exe doesn’t work correctly with these new files it seems…
Is there a way to extract it correctly into a .gpx file with ffmpeg or mapillary_tools?
Update:
I do know that the free telemetry extractor website works with basically everything somehow, but using that website kind of sucks as it takes 100x longer to get gpx files extracted using that, and sometimes if the file is too large it’ll just crash the browser outright. (And no I am NOT paying 350 dollars to buy the full version of it.)
Another issue I just discovered with UL2GSV while using the gpx file extracted from the free online telemetry extractor is that it literally cannot export the mp4 and gpx file into a folder with images anymore (I kind of really need that in order to export to other websites) so if there’s a way that ffmpeg or some other tool can make a folder with the 8k images and have those include gpx metadata in them then that would fix everything.
I was thinking about you.
I’m working the whole day to get the Max 2 files compatible with Street View Studio, no luck unfortunately… Gemini was very helpful, but no luck. I can extract the GPX with the Power Shell I created, that’s not an issue, but using in Streetview is an pain in the … The GPX file is different than the one they used for the Max 1, the Max 2 has more precise data but SVS doesn’t like it…
See the batch script below I use for the basic stuff to get the GPX, it should work for Max 2. You’ll need gpx.fmt file for this and ffmpeg and Exiftools and ofcourse Mapillary tools.
I’ve got a PS script for more complex work, but this batch file should do the trick for you (GPX file). Change al the directories to yours.
CD C:\Users\miche\Dropbox\mapillary
REM Extraction of GoPro MET data
for %%i in (C:\Users\miche\Desktop\GoPro*.360) do ffmpeg -i “%%i” -map 0:3 -c copy “C:\Users\miche\Desktop\GoPro%%~ni_gpmf.mov”REM Combine GoPro MET data with video data (MP4 file from GoPro Player conversion)
for %%i in (C:\Users\miche\Desktop\GoPro*.mp4) do ffmpeg -i “%%i” -i “C:\Users\miche\Desktop\GoPro%%~ni_gpmf.mov” -map 0 -map -0:3 -map 1 -c copy “C:\Users\miche\Desktop\GoPro\Final%%~ni_gpmf_final.mov”
REM Time correction
for %%i in (C:\Users\miche\Desktop\GoPro*.360) do exiftool -TagsFromFile “%%i” “-time:all>time:all” “-GPSDateTime<GPSDateTime” “-TrackDate>TrackDate” -P -overwrite_original “C:\Users\miche\Desktop\GoPro\Final%%~ni_gpmf_final.mov”
mapillary_tools sample_video --video_sample_distance 1.0 C:\Users\miche\Desktop\GoPro\Final"
mapillary_tools process --filetypes image C:\Users\miche\Desktop\GoPro\Final\mapillary_sampled_video_frames
@echoechoechoecho off
rem This script copies all .mov files in a specified directory to .mp4 filessetlocal enabledelayedexpansion
rem Change to the target directory
cd “C:\Users\miche\Desktop\GoPro\Final”
if %errorlevel% neq 0 (
echo Error: Could not change to directory “C:\Users\miche\Desktop\GoPro\Final”.
echo Please ensure the path is correct and accessible.
pause
exit /b 1
)
echo Working in directory: %cd%
echo.rem Loop through each .mov file in the current directory
for %%f in (*.mov) do (
rem Define the new filename with .mp4 extension
set “newname=%%~nf.mp4”rem Check if the source file exists if exist "%%f" ( rem Check if a file with the new name already exists if not exist "!newname!" ( rem Copy the file. The original .mov file remains. copy "%%f" "!newname!" echo Copied "%%f" to "!newname!" ) else ( echo Warning: Skipping "%%f" as "!newname!" already exists. ) ) else ( echo Warning: File "%%f" not found in the current iteration. ))
echo.
echo Copying process complete.
endlocalfor %%i in (C:\Users\miche\Desktop\GoPro\Final*.mp4) do exiftool -p gpx.fmt -ee “%%i” > “C:\Users\miche\Desktop\GoPro\Final%%~ni.gpx”
mapillary_tools upload --user_name **** C:\Users\miche\Desktop\GoPro\Final\mapillary_sampled_video_frames --num_upload_workers=8
pause
Does the PS script need to extract those images with mapillary tools to get the GPX file or can it all be done with just ffmpeg?
No, you can skip the complete Mapillary section, I’ve got that option in that PS script.
I’ve made the PS suitable for everybody. It can process 360 videos (GoPro Max 1 and 2) for Mapillary (automated processing of the video to pictures) and for other programs (mp4 with GPS data and a GPX file).
Hey! Where can I find the gopro labs firmware for the Max 2?
Doesn’t the timewarp at 5x get you around 6FPS at 8K? I just ordered a Max2 today and this was after I confirmed I could get the sub second frame rate with GoPro support.
I finally made a program (windows only) that extracts and corrects the mp4 and gpx files of the GoPro Max 2 which can be used with Street View Studio without any errors. Also there is a Mapillary function built with adjustable sample distance.
I made it into a single .exe file which has all the tools (Exiftool, ffmpeg, ffprobe and mapillary_tools) built in.
This tool is only compatible with the GoPro Max 2, not with the older versions. I will adapt the current program to use it also with the Max 1 but there are still some issues I have to overcome.
The issue was that the GPMF information of the Max 2 is totally different than that of the previous version (Way more advanced, face detection for example). StreetView Studio is much more a pain in the *ss than Mapillary and is rejecting everything what is not compliant with there (own) standards.
The fix will rewrite the GPX and video file headers to be in line with each other after all the extraction of these data.
https://www.dropbox.com/scl/fi/bvm387ruwbkgh8queajjm/GoProMax_Workflow.zip?rlkey=rurrv7hn1xvkpzcwnk6mak9aa&dl=0
You are a very good person TheWizard. I look forward to testing this out shortly but do I open the camera now or wait for Christmas?
Never wait, you can always put the empty box under the Christmas tree ![]()
We have made some adjustments, and GoPro Max 2 stitching works reasonably well now. Here are examples of sequences from Max 2 (.360 files) uploaded through Mapillary tools and stitched by our backend:
The mentioned 5952 x 1920 (which will be stitched into 7680 x 3840) will also work.
At the same time, we haven’t yet tested it thoroughly with longer captures. So, if you have something to upload and can verify that it works for you, that would be awesome.
cc @boris
–
BR, Yaro
Now 419 euro in Belgium.
I will probably split my answer into multiple messages, as it is simpler for me to focus on one thing at a time. ![]()
So, first things first: I removed the FB redirects—I’m not even sure where I got them, to be honest.
.360 handling. The implementation is custom and home-made (implemented long time ago and not by me), and it involves multiple steps (I will describe them below).
From end-to-end (or near that) and open-source, I know about max2sphere, though I’m not sure whether it’s included by default in any repository. Also, I don’t remember if it takes video files or pairs of images as input, so it might require some additional scripting. That’s the closest tool I can think of.
In our case it happens like this:
First, we slice the video into images - always two matching images for GoPro, one from each camera. FFmpeg is a great open-source tool for that. Then, we read each rectangle (not a cube, but rectangles provided by GoPro .360), and generally, it is projected while honoring/blending overlapping parts. Alternatively, one can overlap the images to get a real cubemap, and there are plenty of tools (e.g., py360convert) to move forward from there.


