mapillary / mapillary_tools

Command line tools for processing and uploading Mapillary imagery
BSD 2-Clause "Simplified" License
256 stars 134 forks source link

[BUG] Spherical panoramas with GoPro Max .360 files #661

Closed wildphyru closed 5 months ago

wildphyru commented 9 months ago

Basic information

Steps to reproduce behavior

  1. use Windows PowerShell with the following command line: mapillary_tools video_process D:/video D:/img --video_sample_distance 5

Expected behavior

Output a spherical panoramic frame GS010207

Actual behavior

Output just half that GS010207_0_000000

Corresponding data

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'GS010207.360': Metadata: major_brand : mp41 minor_version : 538120216 compatible_brands: mp41 creation_time : 2023-09-23T16:41:42.000000Z location : -21.9574-047.9892/ location-eng : -21.9574-047.9892/ firmware : H19.03.02.00.00 Duration: 00:00:54.89, start: 0.000000, bitrate: 60184 kb/s Stream #0:00x1: Video: hevc (Main) (hvc1 / 0x31637668), yuvj420p(pc, bt709), 4096x1344 [SAR 1:1 DAR 64:21], 29941 kb/s, 23.98 fps, 23.98 tbr, 24k tbn (default) Metadata: creation_time : 2023-09-23T16:41:42.000000Z handler_name : GoPro H.265 vendor_id : [0][0][0][0] encoder : GoPro H.265 encoder timecode : 16:40:42:15 Stream #0:10x2: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 189 kb/s (default) Metadata: creation_time : 2023-09-23T16:41:42.000000Z handler_name : GoPro AAC vendor_id : [0][0][0][0] timecode : 16:40:42:15 Stream #0:20x3: Data: none (tmcd / 0x64636D74) (default) Metadata: creation_time : 2023-09-23T16:41:42.000000Z handler_name : GoPro TCD timecode : 16:40:42:15 Stream #0:30x4: Data: bin_data (gpmd / 0x646D7067), 86 kb/s (default) Metadata: creation_time : 2023-09-23T16:41:42.000000Z handler_name : GoPro MET Stream #0:40x5: Data: none (fdsc / 0x63736466), 12 kb/s (default) Metadata: creation_time : 2023-09-23T16:41:42.000000Z handler_name : GoPro SOS Stream #0:50x6: Video: hevc (Main) (hvc1 / 0x31637668), yuvj420p(pc, bt709), 4096x1344 [SAR 1:1 DAR 64:21], 29960 kb/s, 23.98 fps, 23.98 tbr, 24k tbn (default) Metadata: creation_time : 2023-09-23T16:41:42.000000Z handler_name : GoPro H.265 vendor_id : [0][0][0][0] encoder : GoPro H.265 encoder timecode : 16:40:42:15

Additional information

I do suspect that the issue is that the stream #0:0 contains half the data and the stream #0:5 the other half but the code is using just the stream #0:0 with this line:

Extracting frames: ffmpeg -hide_banner -nostdin -i GS010207.360 -map 0:0 -filter_script:v /tempDir/ -vsync 0 -frames:0 53 -frame_pts 1 -qscale:0 2 outputDir\GS0102070%06d.jpg

The following warnings appears Unsupported codec with id 0 for input stream 2 Unsupported codec with id 98314 for input stream 3 Unsupported codec with id 0 for input stream 4

-vsync is deprecated. Use -fps_mode Passing a number to -vsync is deprecated, use a string argument as described in the manual. [mov,mp4,m4a,3gp,3g2,mj2 @ 000001e49df843c0] All samples in data stream index:id [4:5] have zero duration, stream set to be discarded by default. Override using AVStream->discard or -discard for ffmpeg command.

ptpt commented 9 months ago

Yes, there are two streams in GoPro Max videos. This is a known issue for the client side video processing https://github.com/mapillary/mapillary_tools#local-video-processing

Suggest upload these 360 videos directly and the server will process them correctly https://github.com/mapillary/mapillary_tools#process-and-upload