Videograms for Video Navigation

Yesterday, I wrote about some reflections I had during Olgerta Asko’s PhD defence. Today, while chopping up the video recording to put on the RITMO web page, I thought that it might help to use a videogram to assist with segmentation. Videograms A videogram is similar to a motiongram, the main difference being that the videogram uses the regular video image as input to the “compression” instead of a motion video. Both give an impression of what is in a video file over time. We have functions for creating both videograms and motiongrams in the Musical Gestures Toolbox, but those are optimized for using also other functions in the toolbox. ...

January 10, 2026 · 3 min · 446 words · ARJ

Convert Insta360 .insp files to equirectangular projection on Ubuntu with FFmpeg

While writing the blog post on AI-realistic photos, I wanted to include one of my 360-degree photos. In the past, I have done this by embedding code snippets from commercial services. However, those tend to disappear or move, so I wanted to check (again) if I can do it natively on my own server instead. And, lo and behold, now, in 2025, it is finally possible to do this easily with regular web tools! ...

December 19, 2025 · 4 min · 837 words · ARJ

Converting Ambisonics files to Binaural audio

Ambisonics is a full-sphere surround sound format that captures audio from all directions using spherical harmonics. To convert it to binaural audio for headphone listening, you need to apply Head-Related Transfer Functions (HRTFs), mathematical models that simulate how sound waves interact with the human head and ears. HRTFs create the spatial cues necessary to perceive 3D sound direction and distance over stereo headphones. My favourite go-to-tool for converting media files, FFmpeg, unfortunately lacks native binaural rendering. However, it offers channel manipulation filters like amerge, channelmap, and pan. These provide basic channel operations but won’t produce true binaural audio. Here are some tips for how to make it work. ...

October 9, 2023 · 1 min · 199 words · ARJ

Finding duration and pixel dimensions for a bunch of video files

As part of my #StillStanding project I need to handle a lot of video files on a daily basis. Today, I wanted to check the duration and pixel dimensions of a bunch of files in different folders. As always, I turned to FFmpeg, or more specifically FFprobe, for help. However, figuring out all the details of how to get out the right information is tricky. So I decided to ask ChatGPT for help. ...

August 2, 2023 · 2 min · 307 words · ARJ

Remove GoPro Flickering

I use a GoPro Max 360-degree camera for my daily Still Standing recordings. Unfortunately, I discovered too late that the camera’s default 60fps setting can cause flickering issues with certain indoor lighting here in Norway, where our electrical system operates at 25 Hz. Fortunately, I found a solution to remove flickering due to artificial light using my favourite terminal tool FFmpeg. The technique works by averaging pixel values between the original frame and a slightly delayed copy, smoothing out flicker from artificial lighting. ...

February 22, 2023 · 1 min · 205 words · ARJ

Add fade-in and fade-out programmatically with FFmpeg

There is always a need to add fade-in and fade-out to audio tracks. Here is a way of doing it for a bunch of video files. It may come in handy with the audio normalization script I have shown previously. That script is based on continuously normalizing the audio, which may result in some noise in the beginning and end (because there is little/no sound in those parts, hence they are normalized more). ...

August 9, 2022 · 2 min · 285 words · ARJ

Video visualizations of mountain walking

After exploring some visualizations of kayaking, I was eager to see how a similar approach could work for walking. On a trip to the Norwegian mountains, specifically at Haugastøl, situated halfway between Oslo and Bergen, I strapped a GoPro Hero Black 10 on my chest and walked up and down a nearby hill called Storevarden. The walk was approximately 25 minutes up and down, and a fast-forward version of the video can be seen here: ...

July 17, 2022 · 2 min · 319 words · ARJ

Kayak motion analysis with video-based horizon leveling

Last year, I wrote about video-based motion analysis of kayaking. Those videos were recorded with a GoPro Hero 8 and I tested some of the video visualization methods of the Musical Gestures Toolbox for Python. This summer I am testing out some 360 cameras for my upcoming AMBIENT project. I thought I should take one of these, a GoPro Max, out for some kayaking in the Oslo fjord. Here are some impressions of the trip (and recording). ...

July 13, 2022 · 3 min · 590 words · ARJ

Removing audio hum using a highpass filter in FFmpeg

Today, I recorded Sound Action 194 - Rolling Dice as part of my year-long sound action project. The idea has been to do as little processing as possible to the recordings. That is because I want to capture sounds and actions as naturally as possible. The recorded files will also serve as source material for both scientific and artistic explorations later. For that reason, I only trim the recordings non-destructively using FFmpeg. ...

July 13, 2022 · 2 min · 303 words · ARJ

Merge multiple MP4 files

I have been doing several long recordings with GoPro cameras recently. The cameras automatically split the recordings into 4GB files, which leaves me with a myriad of files to work with. I have therefore made a script to help with the pre-processing of the files. This is somewhat similar to the script I made to convert MXF files to MP4, but with better handling of the temp file for storing information about the files to merge: ...

March 31, 2022 · 1 min · 168 words · ARJ