Cooling off over the week
A drop of temperature down to the mid 20's feels a huge relief. On Sunday it was a nice day and I could have the windows open all day without the house melting.
I have been riding on the hotter days so that when I come home the house is nice and cool.
On Sunday I organised all the pension documents I have gathered over the last 3 decades, much of which is ready for shredding. I amalgamated several pensions into one large one, keeping those pensions already in a sustainable plan.
Entertainment this week involved revisiting many classic movies:
- Barbarella possibly one of the strangest mainstream Sci-Fi movies ever made. I love the surreal designs in the movie and the extreme quirkiness, along with the innocence of Barbarella character (Jane Fonda).
- Outland a movie I remember watching with my Dad (now deceased), a tale of a space outpost controlled by greedy corporations with Sean Connery trying to uphold justice against all odds.
- Morons From Outer Space
- Saturn 3 British Sci-Fi film from 1980 with Farrah Fowcett, Kirk Douglas & Harvey Keitel, a tranquil hydroponics research station is disturbed by a disturbed visitor and his equally strange robot.
- First Men in the Moon a British film from 1964 based on the H.G. Wells book of the same name. Stop-motion animation by Ray Harryhausen. A film I have a fond memory for.
- Crack In The World
- Krull
Practicalliλ︎
I am reworking the Makefile tasks in practicalli/dotfiles, updating the documentation generation tasks to use Zensical (rather than Material for MkDocs).
I wondered if a Makefile could be separated into different files, to make task definitions modular (potentially avoiding some redundancy in task definitions).
include filename in a Makefile will include the task defined in the filename file. It was reported that imported tasks do not show up in autocompletion, making this approach less friendly to use.
Cyclingλ︎
Sleepy in Collier St on Tuesday started at a steady pace, got a little faster after the Kent Alps.
The weather was cloudy until I started to return, when the sun came out along with a headwind. The return part of the route was slower and I was struggling with motivation, but focusing on my breath helped keep me going.
GPSλ︎
I generated an overlay video using GPStitch.
The resultant video was at a frame rate of 30 frames per second. The camera I record the rides with generated video at 25 frames per second.
When adding the overlay to the video I edit in Blender, the video tracks are not the same length due to the difference in frame rate.
I have been exploring the options available for GPStitch and how to convert a video to 25 frames per second using ffmpeg
Video editingλ︎
Convert a generated overlay video to 25 frames per second can be done using the -r frame rate option.
Changing frame rate of a video can be problematic if the new frames per second (FPS) value doesn’t align with the key frames of the original video.
Key frames are frames which store the full image information. A mismatch can cause quality loss, particularly in complex videos.
Use the -vf (video filter) option with the fps filter to ensure a smooth transition without altering keyframes.
Change frame rate without altering key frame structure
Use the -c copy option to avoid the re-encoding when generating the new video, help preserve the video and audio quality in the new video.
The -c copy option doesn’t modify the existing frames or the codec used in the video, making it a useful choice for lossless framerate change.
The -c copy option can only be used if the frame rate change is compatible with the video format and codec:
Change Frame rate to 25 and maintain the original video encoding
Videos may use a variable frame rate (VFR) for flexibility when streaming. A video with constant frame rate (CFR) can be less complicated when editing.
Use the -vsync option to convert VFR to CFR without re-encoding the video stream.
Convert Variable frame rate to Consistent frame rate
FFMpeg Help
❯ ffmpeg --help
ffmpeg version 7.1.5-0+deb13u1 Copyright (c) 2000-2026 the FFmpeg developers
built with gcc 14 (Debian 14.2.0-19)
configuration: --prefix=/usr --extra-version=0+deb13u1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --disable-libmfx --disable-omx --enable-gnutls --enable-libaom --enable-libass --enable-libbs2b --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libharfbuzz --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-openal --enable-opencl --enable-opengl --disable-sndio --enable-libvpl --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-ladspa --enable-libbluray --enable-libcaca --enable-libdvdnav --enable-libdvdread --enable-libjack --enable-libpulse --enable-librabbitmq --enable-librist --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libx264 --enable-libzmq --enable-libzvbi --enable-lv2 --enable-sdl2 --enable-libplacebo --enable-librav1e --enable-pocketsphinx --enable-librsvg --enable-libjxl --enable-shared
libavutil 59. 39.100 / 59. 39.100
libavcodec 61. 19.101 / 61. 19.101
libavformat 61. 7.103 / 61. 7.103
libavdevice 61. 3.100 / 61. 3.100
libavfilter 10. 5.100 / 10. 5.100
libswscale 8. 3.100 / 8. 3.100
libswresample 5. 3.100 / 5. 3.100
libpostproc 58. 3.100 / 58. 3.100
Universal media converter
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
Getting help:
-h -- print basic options
-h long -- print more options
-h full -- print all options (including all format and codec specific options, very long)
-h type=name -- print all options for the named decoder/encoder/demuxer/muxer/filter/bsf/protocol
See man ffmpeg for detailed description of the options.
Per-stream options can be followed by :<stream_spec> to apply that option to specific streams only. <stream_spec> can be a stream index, or v/a/s for video/audio/subtitle (see manual for full syntax).
Print help / information / capabilities:
-L show license
-h <topic> show help
-version show version
-muxers show available muxers
-demuxers show available demuxers
-devices show available devices
-decoders show available decoders
-encoders show available encoders
-filters show available filters
-pix_fmts show available pixel formats
-layouts show standard channel layouts
-sample_fmts show available audio sample formats
Global options (affect whole program instead of just one file):
-v <loglevel> set logging level
-y overwrite output files
-n never overwrite output files
-stats print progress report during encoding
Per-file options (input and output):
-f <fmt> force container format (auto-detected otherwise)
-t <duration> stop transcoding after specified duration
-to <time_stop> stop transcoding after specified time is reached
-ss <time_off> start transcoding at specified time
Per-file options (output-only):
-metadata[:<spec>] <key=value> add metadata
Per-stream options:
-c[:<stream_spec>] <codec> select encoder/decoder ('copy' to copy stream without reencoding)
-filter[:<stream_spec>] <filter_graph> apply specified filters to audio/video
Video options:
-r[:<stream_spec>] <rate> override input framerate/convert to given output framerate (Hz value, fraction or abbreviation)
-aspect[:<stream_spec>] <aspect> set aspect ratio (4:3, 16:9 or 1.3333, 1.7777)
-vn disable video
-vcodec <codec> alias for -c:v (select encoder/decoder for video streams)
-vf <filter_graph> alias for -filter:v (apply filters to video streams)
-b <bitrate> video bitrate (please use -b:v)
Audio options:
-aq <quality> set audio quality (codec-specific)
-ar[:<stream_spec>] <rate> set audio sampling rate (in Hz)
-ac[:<stream_spec>] <channels> set number of audio channels
-an disable audio
-acodec <codec> alias for -c:a (select encoder/decoder for audio streams)
-ab <bitrate> alias for -b:a (select bitrate for audio streams)
-af <filter_graph> alias for -filter:a (apply filters to audio streams)
Subtitle options:
-sn disable subtitle
-scodec <codec> alias for -c:s (select encoder/decoder for subtitle streams)
Thank you.
Practical.li GitHub Org practicalli-johnny profile
0173760b (feat(post): journal week starting 13 July 2026)