gopro-utils icon indicating copy to clipboard operation
gopro-utils copied to clipboard

Stream handler_name has changed again on Hero6 files

Open JuanIrache opened this issue 6 years ago • 3 comments

So, apparently the stream handler_name has changed again in Hero6 files. And that makes automated data extraction difficult for those of us who use ffmpeg. If I'm not wrong, for Hero5 files up to 60 fps, it was something like

Stream #0:3(eng): Data: none (gpmd / 0x646D7067), 33 kb/s (default) Metadata: creation_time : 2017-11-25T15:46:16.000000Z handler_name : GoPro MET

Which could be extracted via

ffmpeg -y -i VIDEOFILE.MP4 -codec copy -map 0:3 -f rawvideo DATA.BIN

Then, over 60 fps the Stream was:

Stream #0:2(eng): Data: none (gpmd / 0x646D7067), 66 kb/s (default) Metadata: creation_time : 2017-11-25T15:46:48.000000Z handler_name : GoPro MET

So this call, despite the awkward tabulator character before "GoPro MET" would work for both:

ffmpeg -y -i VIDEOFILE.MP4 -codec copy -map 0:m:handler_name:" GoPro MET" -f rawvideo DATA.BIN

Now, Hero6 files don't have the tabulator character:

Stream #0:3(eng): Data: none (gpmd / 0x646D7067), 37 kb/s (default) Metadata: creation_time : 2017-11-21T22:25:40.000000Z handler_name : GoPro MET

So they can be retrieved with the 0:3 of the H5 sub 60fps command, but not with the previously universal 0:m:handler_name:" GoPro MET" and 0:m:handler_name:"GoPro MET" does not work either for some reason I don't comprehend.

Does anyone know how to solve this? Maybe using regular expressions or looking for the "(gpmd / 0x646D7067)" bit?

JuanIrache avatar Nov 25 '17 14:11 JuanIrache

Proof of concept: https://github.com/KonradIT/gopro-utils/blob/master/bin/get_datastream_hero6.sh

KonradIT avatar Nov 26 '17 16:11 KonradIT

@KonradIT Awesome.

I managed to do something similar for my Windows batch script: https://github.com/JuanIrache/gopro-utils/blob/master/GPMD2CSV/GPMD2CSV.bat Not as elegant as yours probably, but works for now. (it also extracts the data to .csv. That was the initial intention of the script)

Thanks

JuanIrache avatar Nov 27 '17 16:11 JuanIrache

Strong work!

I wonder what the most cross-platform solution would be, perhaps a perl or python script rather than a bash or batch script? I don't run windows, does it ship with another cross-platform scripting language?

stilldavid avatar Dec 12 '17 16:12 stilldavid