Marc's Public Blog


All | Aquariums | Arduino | Btrfs | Cars | Cats | Clubbing | Computers | Diving | Dreamstate | Edc | Electronics | Exercising | Festivals | Flying | Halloween | Hbot | Hiking | Linux | Linuxha | Monuments | Museums | Oshkosh | Outings | Public | Rc | Sciencemuseums | Solar | Tfsf | Trips




More pages: November 2024 October 2024 September 2024 August 2024 July 2024 June 2024 May 2024 April 2024 March 2024 February 2024 January 2024 December 2023 November 2023 October 2023 September 2023 August 2023 July 2023 June 2023 May 2023 April 2023 March 2023 February 2023 January 2023 December 2022 November 2022 October 2022 September 2022 August 2022 July 2022 June 2022 May 2022 April 2022 March 2022 February 2022 January 2022 December 2021 November 2021 October 2021 September 2021 August 2021 July 2021 June 2021 May 2021 April 2021 March 2021 February 2021 January 2021 December 2020 November 2020 October 2020 September 2020 August 2020 July 2020 June 2020 May 2020 April 2020 March 2020 February 2020 January 2020 December 2019 November 2019 October 2019 September 2019 August 2019 July 2019 June 2019 May 2019 April 2019 March 2019 February 2019 January 2019 December 2018 November 2018 October 2018 September 2018 August 2018 July 2018 June 2018 May 2018 April 2018 March 2018 February 2018 January 2018 December 2017 November 2017 October 2017 September 2017 August 2017 July 2017 June 2017 May 2017 April 2017 March 2017 February 2017 January 2017 December 2016 November 2016 October 2016 September 2016 August 2016 July 2016 June 2016 May 2016 April 2016 March 2016 February 2016 January 2016 December 2015 November 2015 October 2015 September 2015 August 2015 July 2015 June 2015 May 2015 April 2015 March 2015 February 2015 January 2015 December 2014 November 2014 October 2014 September 2014 August 2014 July 2014 June 2014 May 2014 April 2014 March 2014 February 2014 January 2014 December 2013 November 2013 October 2013 September 2013 August 2013 July 2013 June 2013 May 2013 April 2013 March 2013 February 2013 January 2013 December 2012 November 2012 October 2012 September 2012 August 2012 July 2012 June 2012 May 2012 April 2012 March 2012 February 2012 January 2012 December 2011 November 2011 October 2011 September 2011 August 2011 July 2011 June 2011 May 2011 April 2011 March 2011 February 2011 January 2011 December 2010 November 2010 October 2010 September 2010 August 2010 July 2010 June 2010 May 2010 April 2010 March 2010 February 2010 January 2010 December 2009 November 2009 October 2009 September 2009 August 2009 July 2009 June 2009 May 2009 April 2009 March 2009 February 2009 January 2009 December 2008 November 2008 October 2008 September 2008 August 2008 July 2008 June 2008 May 2008 April 2008 March 2008 February 2008 January 2008 December 2007 November 2007 October 2007 September 2007 August 2007 July 2007 June 2007 May 2007 April 2007 March 2007 February 2007 January 2007 December 2006 November 2006 October 2006 September 2006 August 2006 July 2006 June 2006 May 2006 April 2006 March 2006 February 2006 January 2006 December 2005 November 2005 October 2005 September 2005 August 2005 July 2005 June 2005 May 2005 April 2005 March 2005 February 2005 January 2005 December 2004 November 2004 October 2004 September 2004 August 2004 July 2004 June 2004 May 2004 April 2004 March 2004 February 2004 January 2004 October 2003 August 2003 July 2003 May 2003 April 2003 March 2003 January 2003 November 2002 October 2002 July 2002 May 2002 April 2002 March 2002 February 2002 November 2001 October 2001 September 2001 August 2001 July 2001 June 2001 May 2001 April 2001 March 2001 February 2001 January 2001 December 2000 November 2000 October 2000 September 2000 August 2000 July 2000 June 2000 April 1999 March 1999 September 1997 August 1997 July 1996 September 1993 July 1991 December 1988 December 1985 January 1980





2024/11/17 Vidcomp Script: recompress videos on linux with mencoder or ffmpeg to div3, div4, div5, xvid, mpeg4, h264, h265, VP9, and AV1
π 2024-11-17 01:01 in Linux
This is a script I've had for over 20 years to recompress videos to multiple formats, including resizing resolution, rotating files, changing framerate, capturing from PAL analog cards, back in the day capturing videos from an analog tivo (circa 20 years ago), and much more.
While some amount is kind of obsolete and left for posterity, it's full of options that took me a long time to find for mencoder, and now ffmpeg, the better solution.

The script: https://marc.merlins.org/linux/scripts/vidcomp

There isn't a lot of documentation, except the script itself. Please get the version from the link above, but for indexing purposes, I'll include a potentially slightly out of date version here:

#!/bin/bash

# vidcomp -h -time "-dvd-device . -alang English" dvd://1 /var/local/space/vid/10com8.avi

# http://gentoo-wiki.com/HOWTO_Mencoder_Introduction_Guide # http://electron.mit.edu/~gsteele/ffmpeg
# http://www.mplayerhq.hu/DOCS/HTML/en/menc-feat-enc-libavcodec.html # http://web.njit.edu/all_topics/Prog_Lang_Docs/html/mplayer/encoding.html # http://www.linux.com/article.pl?sid=06/08/22/2121258

# transcode -f 15 -w 800,250,100 -y divx5,lame -N 0x55 -o test.avi -i $1 # enable PAL on PVR350 mpeg2 encoder #v4l2-ctl --set-input 2 #v4l2-ctl -s 2 #v4l2-ctl --set-ctrl=video_peak_bitrate=8000000 #v4l2-ctl --set-ctrl=video_bitrate=6000000

# dumpstream stream# file.tivo dumpstream () { mplayer tivo://tivo/$1 -demuxer 33 -dumpstream -dumpfile "$2" }

die () { echo "${1:-}" exit 1 }

# vidcomp -br 10000 -time "-edl cuts" rec_0012.mov

#mplayer -vf cropdetect enquete.vob #vidcomp -h -vf crop=336:320:12:126 enquete.vob # Aspect ratio has to be forced with codecs other than xvid #vf='-vf scale=480:370' # vidcomp -vf "-filter:v fps=29" $i vf="" af="" #codec=h264 #codec=h265 #br=3000

# AV1 is supposed to be better tan VP9, but on my short tests, # VP9 was faster and gave smaller files. codec=vp9 br=2000 abr=128 rot="" ffrot="" aud_channels="" aud_srate="" time="" # -ss 10 -endpos 1:54:00 (mencoder) # -time "-ss 0:3:40 -t 3:20" (ffmpeg) # or -time "-ss 0:3:40 -t 3:20" -vf "mp=eq2=0.9:1:-0.1" (ffmpeg) # vidcomp -br 8000 -time "-ss 04:00 -t 0:29:20" -vf "mp=eq2=0.9:1:-0.1" full.avi

# Crop the right side crop=1540:1080:0:0

if [ $0 = *tivo* ]]; then echo "Tivo Mode" # tivo files are sometimes mis-detected: force the right demuxer demux="-demuxer 33" # Aspect ratio has to be forced with codecs other than xvid aspect='-force-avi-aspect 1.333' # and remove crap we don't want (tivo inserts a line of crap at the top) vf="-vf crop=352:476,kerndeint" elif [ $0 = *pal* ]]; then # Couldn't quite get this to work yet, crop overrides it :( #vf='-vf scale=540:405,crop=512:384,kerndeint' vf='-vf scale=768:576,kerndeint' # problem with divx is that pass2 can fail with br too low errors codec=h264 br=800 # elif [ $0 = *camvidrecomp ]]; then # codec=ffmpeg # br=8000 # abr=128 # old cameras # abr=48 # br=2400 # aud_channels="-channels 1" # aud_srate="-srate 22050" fi # Hack for MTS demux="-mc 100" #demux="-demuxer lavf"

#aspect='-force-avi-aspect 1.777'

while [ ! -z "$1" ] && [ "$1" =~ ^-.* ]] do if [ "$1" = "-w" ]; then shift codec=win vf="-forceidx -vf kerndeint" fi

if [ "$1" = "-d" ]; then shift codec=divx #vf="-forceidx -vf kerndeint" fi

if [ "$1" = "-D" ]; then shift codec=divx1 vf="-forceidx -vf kerndeint" fi

if [ "$1" = "-F" ]; then shift codec=flv br=400 abr=56 aud_srate="-srate 22050" vf='-vf scale=512:384' fi

if [ "$1" = "-h" -o "$1" = "-h4" ]; then shift codec=h264 vf="-forceidx -vf kerndeint" fi

if [ "$1" = "-h4ff" ]; then shift codec=ffmpeg4 fi

if [ "$1" = "-h5" ]; then shift codec=h265 fi

if [ "$1" = "-vp9" ]; then shift codec=vp9 fi

if [ "$1" = "-av1" ]; then shift codec=av1 fi

if [ "$1" = "-x" ]; then shift codec=xvid vf="-forceidx -vf kerndeint" fi

if [ "$1" = "-ff" ]; then shift codec=ffmpeg fi

# https://trac.ffmpeg.org/wiki/Encode/H.264 # says not compatible with most players if [ "$1" = "-ffll" ]; then shift codec=ffmpegll fi

if [ "$1" = "-vol" ]; then shift vol=":vol=$1" shift fi

# try instead of rotate if [ "$1" = "-f" ]; then shift rot="-vf flip,mirror" #ffrot="-vf hflip,vflip" # https://www.baeldung.com/linux/ffmpeg-rotate-video#:~:text=transpose%20is%20an%20FFmpeg%20filter,the%20values%20from%200%2D3. ffrot="-vf hflip,vflip" ffrot="-vf transpose=1,transpose=3" fi

if [ "$1" = "-r" ]; then #rot="-vf mirror,rotate=$2" # works with -r 3 rot="-vf rotate=$2" ffrot="-vf transpose=$2" shift 2 fi

if [ "$1" = "-br" ]; then br="$2" shift 2 fi

# -ss 10 -endpos 1:54:00 # -ss 00:01:00 -to 00:02:00 if [ "$1" = -time ]; then time="$2" shift 2 fi

# for instance -vf scale=540:405,crop=512:384 if [ "$1" = -vf ]; then vf="$2" shift 2 fi done

test $# -eq 1 || test $# -eq 2 || die "$0 file_src file_dest (please read script for options)" test $# -eq 2 && test -f "$2" && die "file_dest should not exist"

src="$1" dest="${2:-$src.new}"

#set -vx if [ "$codec" = win ]; then ionice -c3 nice -19 mencoder $demux $aud_channels $aud_srate -oac mp3lame -lameopts mode=3:abr:br=$abr$vol $time $aspect $vf -ovc lavc -lavcopts vcodec=msmpeg4v2:vhq:vbitrate=$br $rot -o "$dest" "$src" elif [ "$codec" = divx1 ]; then ionice -c3 nice -19 mencoder $demux $aud_channels $aud_srate -oac mp3lame -lameopts mode=3:abr:br=$abr$vol $time $aspect $vf -ovc lavc -lavcopts vcodec=mpeg4:vhq:trell=yes:v4mv=yes:vbitrate=$br -ffourcc DX50 $rot -o "$dest" "$src" elif [ "$codec" = flv ]; then # http://www.jeremychapman.info/cms/mencoder-avi-to-flv-conversion ionice -c3 nice -19 mencoder $demux $aud_channels $aud_srate -oac mp3lame -lameopts mode=3:abr:br=$abr$vol $time $aspect $vf -ovc lavc -lavcopts vcodec=flv:vbitrate=$br:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -of lavf $rot -o "$dest" "$src" elif [ "$codec" = xvid ]; then ionice -c3 nice -19 mencoder $demux $aud_channels $aud_srate -oac mp3lame -lameopts mode=3:abr:br=$abr$vol $time $aspect $vf -ovc xvid -xvidencopts bitrate=$br $rot -o "$dest" "$src" elif [ "$codec" = ffmpeg4 ]; then # aspect/-force-avi-aspect not supported by ffmpeg #ionice -c3 nice -19 ffmpeg $time -analyzeduration 9999999 -probesize 9999999 -y -i "$src" $vf -c:v libx264 -preset medium -b:v ${br}k -pass 1 -c:a libfdk_aac -b:a 128k -f mp4 /dev/null #ionice -c3 nice -19 ffmpeg $time -analyzeduration 9999999 -probesize 9999999 -i "$src" $vf -c:v libx264 -preset medium -b:v ${br}k -pass 2 -c:a libfdk_aac -b:a 128k -f mp4 "$dest" ionice -c3 nice -19 ffmpeg $time -analyzeduration 9999999 -probesize 9999999 -y -i "$src" -filter:v fps=30 $vf -c:v libx264 -preset medium -b:v ${br}k -pass 1 -an -f mp4 /dev/null ionice -c3 nice -19 ffmpeg $time -analyzeduration 9999999 -probesize 9999999 -i "$src" -filter:v fps=30 $vf -c:v libx264 -preset medium -b:v ${br}k -pass 2 -c:a aac -b:a 128k -f mp4 "$dest"

### H265 in MP4 => slow and royalties elif [ "$codec" = h265 ]; then # https://trac.ffmpeg.org/wiki/Encode/H.265 ionice -c3 nice -19 ffmpeg $time -y -i "$src" $vf $ffrot -filter:v fps=30 -c:v libx265 -b:v ${br}k -x265-params pass=1 -an -f mp4 /dev/null ionice -c3 nice -19 ffmpeg $time -i "$src" $vf $ffrot -filter:v fps=30 -c:v libx265 -b:v ${br}k -x265-params pass=2 -c:a aac -b:a 128k -f mp4 "$dest"

# https://trac.ffmpeg.org/wiki/Encode/AV1 # # vp9 vs av1 comparison and flags: # https://jonathanmh.com/p/encoding-webm-videos-with-ffmpeg-vp9-av1
# Gemini says: Compression Efficiency # * AV1: Offers the best compression efficiency, resulting in smaller file sizes for a given quality level # * H.265: Provides significant improvements over H.264, offering better compression than VP9 in many cases # * VP9: While not as efficient as H.265 or AV1, it still offers decent compression and is widely supported. # Encoding and Decoding Speed: # * AV1: Requires more computational power for encoding and decoding, which can impact performance on older hardware # * H.265: Offers a good balance between compression efficiency and encoding/decoding speed. # * VP9: Generally faster to encode and decode compared to AV1.

### VP9 is free version of H265 # https://caniuse.com/?search=vp9 # cpu used lower values are slower but better quality -row-mt 1 added HT. Speed is faster than AV1 but compression seems still good # 2453715 file1.mp4 # 1555963 file1_av1_4.webm # 1611192 file1_av1_6.webm # 1611192 file1_av1_8.webm # 1668740 file1_vp9_4.webm # 1598794 file1_vp9_6.webm # 1595698 file1_vp9_8.webm elif [ "$codec" = vp9 ]; then ionice -c3 nice -19 ffmpeg $time -y -i "$src" $vf $ffrot -filter:v fps=30 -c:v libvpx-vp9 -b:v ${br}k -cpu-used 6 -row-mt 1 -pass 1 -an -f null /dev/null ionice -c3 nice -19 ffmpeg $time -i "$src" $vf $ffrot -filter:v fps=30 -c:v libvpx-vp9 -b:v ${br}k -cpu-used 6 -row-mt 1 -pass 2 -c:a libopus -b:a 128k "$src.webm"

### AV1 a better version of VP9 # https://caniuse.com/?search=av1 # https://trac.ffmpeg.org/wiki/Encode/AV1 # cpu used lower values are slower but better quality -row-mt 1 added HT elif [ "$codec" = av1 ]; then ionice -c3 nice -19 ffmpeg $time -y -i "$src" $vf $ffrot -filter:v fps=30 -c:v libaom-av1 -b:v ${br}k -cpu-used 8 -row-mt 1 -pass 1 -an -f null /dev/null ionice -c3 nice -19 ffmpeg $time -i "$src" $vf $ffrot -filter:v fps=30 -c:v libaom-av1 -b:v ${br}k -cpu-used 8 -row-mt 1 -pass 2 -c:a libopus -b:a 128k "$src.webm"

# old legacy mencoder stuff (mencoder h264 or divx) else pass="$dest".pass for i in 1 2 do echo "DOING $codec PASS $i" echo "------------------" if [ "$codec" = h264 ]; then #vf=$vf,dsize=4/3,scale #vf=$vf,scale=720:480 vf=$vf,scale # why is scale there by itself? # Trellis searched quantization

# do not allow space in source, to allow a multi file source ionice -c3 nice -19 mencoder -passlogfile "$pass" $demux $aud_channels $aud_srate -oac mp3lame -lameopts mode=3:abr:br=$abr$vol $time $aspect -vf $vf -ovc x264 -x264encopts bitrate=$br:turbo=1:pass=1:threads=0 $rot -o "$dest" $src || die "multipass failed on pass $i" elif [ "$codec" = divx ]; then # Trellis searched quantization ionice -c3 nice -19 mencoder -passlogfile "$pass" $demux $aud_channels $aud_srate -oac mp3lame -lameopts mode=3:abr:br=$abr$vol $time $aspect $vf -ovc lavc -lavcopts vcodec=mpeg4:vhq:trell=yes:v4mv=yes:vbitrate=$br:vpass=$i -ffourcc DX50 $rot -o "$dest" "$src" || die "multipass failed on pass $i" fi done /bin/rm "$pass" *.pass.mbtree &>/dev/null #else # echo "Unknown $codec" >&2 fi

#vidrename --noinfo "$dest"

/bin/rm ffmpeg2pass-0.log ffmpeg2pass-0.log.mbtree x265_2pass.log* &>/dev/null

Again, to up to date version is here: https://marc.merlins.org/linux/scripts/vidcomp

2024/11/17 Vidrename Script: Clean-up/Normalize Video Filenames and Add Codec And Container Format With Mplayer
π 2024-11-17 01:01 in Linux
This is for linux, using mplayer because it was written many years ago before ffmpeg was a proper option. It parses mplayer video file decoding to rename filenames with the proper codec and file container.

The script: https://marc.merlins.org/linux/scripts/vidrename

Possible video containers supported by this script *.mpeg (original mpep1/mpeg2 from the '90s) *.rm (very old realaudio/realvideo from the 90's) *.mov (old apple quicktime container, also from 90's)

  • wmv (old video media player, still from 90's)
  • avi (newer-ish video media)
  • mp4 (for a while new format used by most videos)
  • ogv (Org Vorbis OSS format, now obsolete)
  • mkv (free open source container to get around mp4 patents and royalties)
  • webm (newer free/open source container)
  • The script does not bother to show old/obsolete codecs for WMV/AVI (you can add support if you care), and concentrates on only showing some more popular formats over the years that I cared more about:

  • divx3.avi
  • divx4.avi
  • divx5.avi
  • xvid.avi
  • H264.mp4 (for a while the most popular format after divx5/divx4/divx3)
  • H265.mp4 (the more efficient version of H264, but the patent/royalties fees on it are way high)
  • VP9.mp4 / VP4.webm (meant to replace H264 and H265 with more efficient and free version)
  • AV1.mp3 / AV1.webm (newer versino of VP9, still open source and free)
  • This is what it looks like

    sauron [mc]$ l total 15148 drwxr-sr-x 1 merlin merlin 188 Nov 17 19:32 .
    drwxr-sr-x 1 merlin merlin 184 Nov 17 19:32 ..
    -rw-r--r-- 1 merlin merlin 2453715 Nov 17 19:31 file1.mp4 -rw-r--r-- 1 merlin merlin 1572011 Nov 17 19:31 file2.mp4 -rw-r--r-- 1 merlin merlin 1734137 Nov 17 18:25 Out16_av1.mp4 -rw-r--r-- 1 merlin merlin 1433362 Nov 17 18:29 Out16a_vp9.mp4 -rw-r--r-- 1 merlin merlin 827673 Nov 17 18:35 Out16c_vp9.mp4 -rw-r--r-- 1 merlin merlin 1449311 Nov 17 18:26 Out16_vp9.mp4 -rw-r--r-- 1 merlin merlin 3496280 Nov 17 18:22 Out_av1.mp4 -rw-r--r-- 1 merlin merlin 2527312 Nov 17 18:20 Out_vp9.mp4 sauron [mc]$ vidrename --noinfo * Going from file1.mp4 to File1 - H265.mp4 Going from file2.mp4 to File2 - VP9.mp4 Warning for Out16_av1.mp4, webm != mp4 Going from Out16_av1.mp4 to Out16 av1 - AV1.webm Warning for Out16a_vp9.mp4, webm != mp4 Going from Out16a_vp9.mp4 to Out16a vp9 - VP9.webm Warning for Out16c_vp9.mp4, webm != mp4 Going from Out16c_vp9.mp4 to Out16c vp9 - VP9.webm Warning for Out16_vp9.mp4, webm != mp4 Going from Out16_vp9.mp4 to Out16 vp9 - VP9.webm Warning for Out_av1.mp4, webm != mp4 Going from Out_av1.mp4 to Out av1 - AV1.webm Warning for Out_vp9.mp4, webm != mp4 Going from Out_vp9.mp4 to Out vp9 - VP9.webm sauron [mc]$ l total 15148 drwxr-sr-x 1 merlin merlin 298 Nov 17 19:32 .
    drwxr-sr-x 1 merlin merlin 184 Nov 17 19:32 ..
    -rw-r--r-- 1 merlin merlin 2453715 Nov 17 19:31 'File1 - H265.mp4' -rw-r--r-- 1 merlin merlin 1572011 Nov 17 19:31 'File2 - VP9.mp4' -rw-r--r-- 1 merlin merlin 1734137 Nov 17 18:25 'Out16 av1 - AV1.webm' -rw-r--r-- 1 merlin merlin 1433362 Nov 17 18:29 'Out16a vp9 - VP9.webm' -rw-r--r-- 1 merlin merlin 827673 Nov 17 18:35 'Out16c vp9 - VP9.webm' -rw-r--r-- 1 merlin merlin 1449311 Nov 17 18:26 'Out16 vp9 - VP9.webm' -rw-r--r-- 1 merlin merlin 3496280 Nov 17 18:22 'Out av1 - AV1.webm' -rw-r--r-- 1 merlin merlin 2527312 Nov 17 18:20 'Out vp9 - VP9.webm'

    Other example uses:

    sauron [mc]$ vidrename --help
    Unknown option: help
    /var/local/scr/vidrename [--fixepisodes] [--verbose] [--extonly] [--dots] [--spacedash] [--spaces2dash] [--ucname [num]] [--add text] [--noinfo] [--writetofile] [--norename] [--addfps]
    

    --extonly: only fix file extension, do not beautify filename --dots: remove all dots from filenames ane replace with spaces --spacedash: add spaces around all dashes if not already present (only one by default) (IGNORED, ON BY DEFAULT) --spaces2dash: replace all spaces with dashes --fixepisodes: normalize showname - 1x01 episodename.ext --ucname: number of letters in a word before we uppercase the first (default 3) (IGNORED) --add: add random text before the extension --noinfo: do not add file info to filename ( - XxY - z kbps) --writetofile: do not add fileinfo to filename, write to a different file --norename: only print what would be done, do not rename files --addfps add fps of video to filenames

    sauron [mc]$ vidrename --spaces2dash --addfps * Going from File1_-_H265_-_H265.mp4 to File1_-_H265_-_1920x1080_-_2974kbps_-_30.000_fps_-_H265.mp4 Going from File2_-_VP9_-_VP9.mp4 to File2_-_VP9_-_1920x1080_-_1861kbps_-_60.000_fps_-_VP9.mp4 Going from Out16_av1_-_AV1_-_AV1.webm to Out16_av1_-_AV1_-_1920x1080_-_30.000_fps_-_AV1.webm Going from Out16a_vp9_-_VP9_-_VP9.webm to Out16a_vp9_-_VP9_-_1920x1080_-_30.000_fps_-_VP9.webm Going from Out16c_vp9_-_VP9_-_VP9.webm to Out16c_vp9_-_VP9_-_1920x1080_-_30.000_fps_-_VP9.webm Going from Out16_vp9_-_VP9_-_VP9.webm to Out16_vp9_-_VP9_-_1920x1080_-_30.000_fps_-_VP9.webm Going from Out_av1_-_AV1_-_AV1.webm to Out_av1_-_AV1_-_1920x1080_-_30.000_fps_-_AV1.webm Going from Out_vp9_-_VP9_-_VP9.webm to Out_vp9_-_VP9_-_1920x1080_-_30.000_fps_-_VP9.webm

    And again, the script is here: https://marc.merlins.org/linux/scripts/vidrename

    2024/11/16 Orbital at Midway SF, back to the 90's!
    π 2024-11-16 01:01 in Clubbing
    As far as trips back in memory lane, go, this was a winner. Orbital are OGs in the electronic music world. After Jean Michel Jarre and Vangelis, they were likely the 3rd electronic music act I listened to, way back when. It's very hard to define their genre, especially since they predate most EDM genres, but I've seen "industrial electro funk" although Halycon and on is definitely it's own genre still (more ambient).

    The event was organized by Goldenvoice. The flier didn't have any info on whether they were going to be OTC, have openers, or until what time the event was running. The only piece of info was that it was supposed to start at 21:00. By the time I arrived at 22:00, wary of previous events announced at 21:00 but having so-so openers, or sometimes not even really opening doors until 22:00, but this time around they apparently did open at 21:00 and Orbital themselves did start at 21:00, go figure... So, I missed the first hour, but they were going strong by the time I arrived:





    not every time you see this
    not every time you see this



    The somewhat weird thing is they stopped in the middle of the set after saying something I was unable to comprehend due to poor microphone sound, but they took a 20mn break where they just left the stage and everyone in the room, and came back 20mn later :)

    The 2nd half of the show had more top tracks, including of course the Halcyon and on, but plenty more including "where times becomes a loop" that I had totally forgotten about:

    the room was packed
    the room was packed

    one of them performed without shoes :)
    one of them performed without shoes :)


    The show ended at 00:40. Definitely good time were had:


    2024/11/14 Neil deGrasse Tyson back at San Jose Center for Performing Arts: An Astrophysicist Goes To The Movies, the Sequel
    π 2024-11-14 01:01 in Outings, Public
    Back to see Neil deGrasse Tyson for a 3rd time, this time for part 2 of "An Astrophysicist Goes To The Movies". It ws a fun evening as any evening would him, would be, although I found this specific talk a little weaker than the first one, probably because he had to find other material that he hand't already used in the first talk, but that said there were still plenty of fun bits, and as I said, any time with him is a fun time :)



    he still has a few books I should read :)
    he still has a few books I should read :)

    the list of movies for his 2nd talk
    the list of movies for his 2nd talk

    those doors were indeed portals to a 4th dimension we can't see as 3 dimensional beings
    those doors were indeed portals to a 4th dimension we can't see as 3 dimensional beings

    wizard of oz was wrong all along!
    wizard of oz was wrong all along!

    I never caught that one either
    I never caught that one either

    parsecs are a unit of distance, they can't be used for speed or time (BTW a parsec is 3.6 light years as I found out)
    parsecs are a unit of distance, they can't be used for speed or time (BTW a parsec is 3.6 light years as I found out)

    Gravity: haha, that's an easy one. It had lots of good physics, but also some glaring holes
    Gravity: haha, that's an easy one. It had lots of good physics, but also some glaring holes


    Oh no, don't let him go! :)


    As a bonus, he gave he attendees a hall pass for the next day if they were late :)


    And I had no idea he was on zoolander 2 :)


    It was another very fun night, very quick video summary:

    2024/11/11 Adding USB-Serial and USB-Storage to Ubiquity Edgerouter 4
    π 2024-11-11 01:01 in Computers, Linux
    So, after using WNDR routers that allowed various linux fimrware replacements, the last one I had was just struggling running a name server and other things I needed due to old hardware and lack of horsepwoer and RAM.

    After asking around, I was told to try the Ubiquity Edgerouter 4, which is indeed a nice little router and comes with linux out of the box. The best thing is it's designed to give you full access so you can install your own linux software. Well done!

    But, for some strange reason, the then wonderful people at ubiquity did not figure out that it was useful to plug a serial port adapter to monitor or connect to another device, or even to use/need external USB storage. It is of course linux, you can build your own kernel and modules, but doing it for another architecture requires cross compilers and a non trivial setup that would likely have taken me days to setup.

    This is where Nils Andreas Svee (Lockhair) comes in, and as part of his CAKE project to improve networking on that device (requiring a new kernel), he built a full compiler suite for that kernel, and very nicely added USB serial modules to his build for me a few years back for the ER1.x firmware.

    Fast forward a few years, and the original 1.10.11 was based on Debian 7 (Wheezy) which became totally obsolete. Getting updated packages for that ancient distro became difficult, so I figured I should upgrade to 2.x.
    After doing so ( EdgeRouter ER-4/ER-6P/ER-12/ER-12P: Firmware v2.0.9-hotfix.7 31 Jul 2023 from https://ui.com/download/releases/firmware ), I of course realized it was a new kernel that needed new modules.

    But then I realized that during that time Ubiquity turned evil and stopped releasing GPL required code, including the kernel, which in turn caused Lochnair to stop being able to maintain his project: https://community.ui.com/questions/CAKE-thread-gone/27de66b2-9ac2-4fcb-93f7-d02cd5785b4c

    I had a glimmer of hope that the new binary kernels were close enough to the last officially released kernel source, and asked him if he could build the extra missing modules: https://github.com/Lochnair/kernel_e300/issues/2 . He super nicely agreed and they worked!

    Thanks to him, I now have have a fully upgraded and featured linux route with usb-serial support and usb-storage support.

    You can get the modules here:

    << DOWNLOAD ME

  • lib/modules/4.9.79-UBNT/kernel/drivers/usb/misc/ezusb.ko
  • lib/modules/4.9.79-UBNT/kernel/drivers/usb/storage/uas.ko
  • lib/modules/4.9.79-UBNT/kernel/drivers/usb/class/cdc-wdm.ko
  • lib/modules/4.9.79-UBNT/kernel/drivers/usb/serial/pl2303.ko
  • lib/modules/4.9.79-UBNT/kernel/drivers/usb/serial/ftdi_sio.ko
  • lib/modules/4.9.79-UBNT/kernel/drivers/usb/serial/usbserial.ko
  • lib/modules/4.9.79-UBNT/kernel/drivers/usb/serial/keyspan.ko
  • usbcore: registered new interface driver pl2303 usbserial: USB Serial support registered for pl2303 pl2303 1-1.1:1.0: pl2303 converter detected usb 1-1.1: pl2303 converter now attached to ttyUSB0 usbcore: registered new interface driver uas usb 1-1.2: new high-speed USB device number 4 using xhci-hcd usb 1-1.2: New USB device found, idVendor=0951, idProduct=1666 usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 1-1.2: Product: DataTraveler 3.0 usb 1-1.2: Manufacturer: Kingston usb 1-1.2: SerialNumber: 1C6F654E48EBB131D95D0ABB usb-storage 1-1.2:1.0: USB Mass Storage device detected scsi host0: usb-storage 1-1.2:1.0 scsi 0:0:0:0: Direct-Access Kingston DataTraveler 3.0 PMAP PQ: 0 ANSI: 6 sd 0:0:0:0: [sda] 121110528 512-byte logical blocks: (62.0 GB/57.8 GiB) sd 0:0:0:0: [sda] Write Protect is off sd 0:0:0:0: [sda] Mode Sense: 45 00 00 00 sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA sda: sda1 sda2 sd 0:0:0:0: [sda] Attached SCSI removable disk

    If you use this, please make a donation to him for his good work:

  • https://paypal.me/nsvee.
  • https://wise.com/pay/me/nilsandreass
  • 2024/11/10 Getting Things Done in an ADHD World
    π 2024-11-10 01:01 in Arduino, Computers, Electronics
    I attended Pasadena Hackaday Supercon, so I figured I'd put my pictures into a quick blog entry, shouldn't take long...


    1) Oh, I need to finish writing code to get the SAO badge holder to do something fun

    2) Mmmh, why does this python global variable thing doessn't work in the function

    3) Goes to re-learn python, with help from gemini and how python forks global variables by default in functions so what you write to them isn't saved at local scope (oh my, why did they do that?)

    4) after more hacking, get a proper demo working:

    5) publish code https://github.com/marcmerlin/2024-Supercon-8-Add-On-Badge/blob/main/README.md (actual code is here: https://github.com/marcmerlin/2024-Supercon-8-Add-On-Badge/blob/main/software/software/main.py )

    6) Oh, I need to make a video demo of the SAO, but...

    7) oh yeah, there was that hat on my desk I needed to add LEDs on for an upcoming party, start hacking on that

    8) mmmh, the hat won't work long enough with a USB battery, start hacking on a lipo solution

    9) ah, lipos work, but the front LED panels rated for 5V start failing around 3.5V, so I need to make a dual lipo solution, one for the neopixels and one for the RGB panels

    10) test and measure the dual lipo solution and figure out it will last close to 12H, that's good. Ok, hat works mostly, post that https://www.instagram.com/p/DCYEl1jJd_-
    11) Ah yes, the SAO video I was supposed to work on: https://www.youtube.com/watch?v=z7MSywf7js4

    12) During that time, I get interesting distracting packages on my doorstep, like lovely flexible LED panels that will hopefully power my future outfit: https://rpi-rgb-led-matrix.discourse.group/t/rpi0-2w-speed-compared-to-rpi3a/913/2

    13) While I'm testing them, also try some new rPi0 2w chips and microcontrollers to see if they can power my LED outfit with a smaller form factor (and yes they can): https://rpi-rgb-led-matrix.discourse.group/t/rpi0-2w-speed-compared-to-rpi3a/913 . In the interest of briefty, I'm going to skip the part that included migrating from raspbian to a new dietpi linux distro and port back all my custom changes on it :)

    14) That said, I had a long-ish discussion and planning with the electrodragon folks in China on how to make a new 3 channel daughter board that is much smaller and would decrease the over footprint of all new picture frames like the one I built, and of course my LED outfit.

    15) but wait, now I also find out there is a new beaglebone solution that does 6 channels output instead of 3? Ok, make a post about it: https://rpi-rgb-led-matrix.discourse.group/t/interesting-6-port-board-beaglebone-pocketcroller-v2/918/2

    16) and file a couple of RFE bugs to look into it: https://github.com/hzeller/rpi-rgb-led-matrix/issues/1733 + https://github.com/FalconChristmas/fpp/issues/2054

    17) Oh, I just found this old video on my laptop, why did I never post it? Ok, fix that: https://marc.merlins.org/perso/linux/post_2021-01-23_Linux_conf_au-2021-LED-Talk.html

    18) Mmmh, so when I quickly posted those pictures from Neil deGrasse Tyson who just gave a talk, I got a reminder it was annoying for my blog system not to be able to link to videos directly without having to upload them to youtube.

    19) Ok, learn about html5 video tag, hack my blog system to support videos, and push a new blog with my first video tag: https://marc.merlins.org/perso/outings/post_2024-11-14_Neil-deGrasse-Tyson-back-at-San-Jose-Center-for-Performing-Arts_-An-Astrophysicist-Goes-To-The-Movies_-the-Sequel.html

    20) ok, but why did I have to rescue my video from my phone because the H265 recompressed version did not work in the blog? Ah, because of royalties on H265 being too high, most browsers refuse to add support for it: http://marc.merlins.org/perso/linux/post_2024-11-17_Vidrename-Script_-Clean-up-Normalize-Video-Filenames-and-Add-Codec-And-Container-Format-With-Mplayer.html

    21) Ok, sure, but now I need to upgrade my vidcomp script to support VP9 and AV1: http://marc.merlins.org/perso/linux/post_2024-11-17_Vidcomp-Script_-recompress-videos-on-linux-with-mencoder-or-ffmpeg-to-div3_-div4_-div5_-xvid_-mpeg4_-h264_-h265_-VP9_-and-AV1.html

    22) then I find an Email from a chinese engineer who is willing to talk to me about making better LED shoes. That's exciting, let me reply to him first

    23) ok, now I can recompress my videos to VP9, which I benchmarked to somehow be faster to compress and still smaller file size than AV1 (not supposed to be the case, but that's what I'm getting). On the plus side, VP9 works with more browsers than AV1.

    24) what as I doing again? (now days have passed). Oh yes, I was supposed to write a blog on hackaday supercon: http://marc.merlins.org/perso/electronics/post_2024-11-01_Pasadena-Hackaday-Supercon-2024.html

    25) of course the ridiculous amount of time spent to allow these 2 videos in that post, is a bit hard to justify, but it's really solving a problem I've had for over 10 years, and never got to the top of the pile, because, well, you see what happens when I try to put something on top of the pile :)

    26) and I was good, I didn't even play with the micropython rpi micro I received in the mail this week, or the electromage pixelblaze and I/O board, or more LED panels that somehow showed up at my doorstep :)

    27) mmmh, and there are all those webcams I ordered and need to configure, but now it's clear I'm going to have to re-install my camera controller, shinobi, from scratch, and that's yet another rabithole...

    28) in the meantime I have to finish my LED hat, and design my new shirt and pants for Dreamstate in 4 days... Wish me luck :)

    2024/11/09 Jason Ross at MidwaySF
    π 2024-11-09 01:01 in Clubbing
    It had been a while since I had seen Jason Ross, so it was good news when I heard he was coming back at Midway SF.

    What wasn't expected, was that it would be in a side building which was mostly a hangar party, for some reason they were badly lacking bathrooms, so there was a 30mn bathroom line, which was not good.
    The lineup felt a bit all over the place in that there was no real unity in the music style, and I found myself waiting for Jason to take over, which he did at 0:30. I had a good time for the remaining 90mn.



    30mn bathroom line outside
    30mn bathroom line outside



    See more images for Jason Ross at MidwaySF
    2024/11/01 Pasadena Hackaday Supercon 2024
    π 2024-11-01 01:01 in Arduino, Electronics
    After having such a great time at the linux.conf.au Open Hardware Miniconfs over the year, and missing them after the last one where I built those badges, I somehow missed a local-enough Hackaday Supercon that had been going on for years. Oh noes!

    It was very cool that I got to wear my LCA SAO badges for the first time:


    This post, because of its 2 video inserts, a new addition to my blogging software, was also an interesting exercise in non linear time and tasks, more on this page: Getting Things Done in an ADHD World

    Day 1, Friday

    Thanks to Anthony for letting me know about it, and I was able to attend. Went there early on friday for the pre-conf to work on the badges:


    the conference badge was this 6 port micropython rPi micro with a couple of SAOs.
    the conference badge was this 6 port micropython rPi micro with a couple of SAOs.

    they nicely provided food all 3 days
    they nicely provided food all 3 days

    essential geek survival food :)
    essential geek survival food :)

    They gave us a quick primer on how the badge worked, although it would have been better on a webpage with links and info for total beginners who had never used micropython and thorny or knew what thorny was (that included me):


    I'm glad I took pictures of these slides, they only made sense many hours later. They should have been online
    I'm glad I took pictures of these slides, they only made sense many hours later. They should have been online

    finding fellow LED geeks :)
    finding fellow LED geeks :)

    learning blinkies for beginners, scan this
    learning blinkies for beginners, scan this

    While I was there, I 9ound out they had a wonderful 4 bit computer some years back. I actually really regret not having been there that year, programming that in hand crafted assembly would have been epic:


    someone hacked a basic I2C on it
    someone hacked a basic I2C on it

    people now hard at work
    people now hard at work

    I used the opportunity to bring previous LCA toys and show them off (and fix a few)
    I used the opportunity to bring previous LCA toys and show them off (and fix a few)


    People came with plenty of SAOs:



    some came more ready than me :)
    some came more ready than me :)

    SAO extenders, cool!
    SAO extenders, cool!

    SOA badge holder bag, sweet!
    SOA badge holder bag, sweet!

    I found Tom Verbeure, the person who had been hacking on RGB Panels with open source FPGAs (colorlight). Cool project for sure. See: https://github.com/q3k/chubby75?tab=readme-ov-file#colorlight-5a-75b and https://github.com/lucysrausch/colorlight-led-cube/tree/master


    Also, finally got to meet Henner Zeller, the rpi-rgb-panels author I've been working online with for years:


    epic watch!
    epic watch!

    Also got to meet Daryll Strauss from precision insight, later acquired by VA Linux some 25+ years ago:



    People still hacking at night:


    I was lit up enough not to get lost :)
    I was lit up enough not to get lost :)

    Day 2-3, Saturday & Sunday

    Saturday and Sunday were the main conference days:


    went to attend a few talks
    went to attend a few talks

    hacking radio sound and B&W video from a chip, super cool!
    hacking radio sound and B&W video from a chip, super cool!

    learned about an online microcontroller emulator, wokwi, very nice
    learned about an online microcontroller emulator, wokwi, very nice




    I got to see a pick and place machine, nice to see them work:


    this is what the machine was 'printing'
    this is what the machine was 'printing'


    I tried the SMD challenge, that was hard as hell:


    we got old and fat irons, making things harder :)
    we got old and fat irons, making things harder :)


    I couldn't get the last 2 LEDs working, they were so stupidly small
    I couldn't get the last 2 LEDs working, they were so stupidly small

    I had someone help me fix mine :)
    I had someone help me fix mine :)

    and they all worked, thank you to the master solderer!
    and they all worked, thank you to the master solderer!

    added the result on my badge :)
    added the result on my badge :)

    Random fun shots :)


    people hard at work
    people hard at work



    During the weekend, the SAO wall got populated:






    Fun to see this SAO based on this burning man sign

    Original from Burning Man
    Original from Burning Man

    more and more
    more and more

    and more :)
    and more :)

    Saturday evening party had a nice real time AI image generator:





    some were far out :)
    some were far out :)



    The conf ended with a presentation of best SAOs:



    This guy won the contest of biggest SAO, he had a printer working off USB, run by his SAO
    This guy won the contest of biggest SAO, he had a printer working off USB, run by his SAO


    Sunday ended with a party at a bar, thankfully I had my battery soldering iron :)


    This was loads of fun, and I definitely learned some good stuff. Sad I didn't go earlier but glad I went this year. Thanks bunch to all the organizers and attendeers who contributed!

    More pictures: https://photos.app.goo.gl/2hYRaaB5dF5mvv4N8

    See more images for Pasadena Hackaday Supercon 2024
    2024/10/22 Backpacking Tahoe's Grouse Ridge from Carr Lake with Arturo
    π 2024-10-22 01:01 in Hiking
    The trip happened late in the season, but just before the first round of storms, so it worked out just fine. We were even lucky to have a nearby storm front that brought warmer air, making nights above freezing, which was nice.

    It was a not too long drive to the trailhead which by this time of the season was pretty empty:

    had to find the correct forrest roads to get there
    had to find the correct forrest roads to get there

    Campground was closed by that time of the season
    Campground was closed by that time of the season



    Quick picture at the levy by trailhead
    Quick picture at the levy by trailhead


    Day #1

    After that, time to go:








    We made good time and got to camp 1H before sunset and look at the stars:





    Day #2









    I used the opportunity to learn how to setup my fenix 7 for hiking
    I used the opportunity to learn how to setup my fenix 7 for hiking


    it was late in the season, lakes were pretty dry
    it was late in the season, lakes were pretty dry

    lake was split in two
    lake was split in two

    cool to see the age rings on the fallen tree
    cool to see the age rings on the fallen tree

    the day was pretty sedate, 10.5 miles in 7h, only 1500ft of climbing
    the day was pretty sedate, 10.5 miles in 7h, only 1500ft of climbing


    tried to find a campsite that wasn't too windy
    tried to find a campsite that wasn't too windy

    found a good spot
    found a good spot





    Day #3

    The night was not that cold, we got lucky, and a nice sunrise the next day:




    a little chipmunk was housed next to us :)
    a little chipmunk was housed next to us :)







    lovely fall colors
    lovely fall colors

    quick day out, we were out by noon
    quick day out, we were out by noon


    2024/10/20 Northern California Maker Faire at Mare Island
    π 2024-10-20 01:01 in Outings, Public
    Maker Faire came back but it's not really in the bay area anymore, Mare Island is honestly closer to Sacramento than it is from the South Bay. It's a bad location in my opinion, and I hope they come back to something more central to the bay, but we'll see.


    That said I was driving back from Tahoe, so that remote location was on the way home and stopping there wasn't terrible. We arrived almost at opening time, but with offsite parking and bussing in, it did burn about 30mn. not ideal but we arrived in eventually:


    Finally at the entrance:











    It was nice to be in time for Adam Savage from mythbusters:


    still has the passion
    still has the passion

    Fun to see coke and mentos again too:



    The dark room was a fun time:
















    The LED Piano was great to see again:




    I also loved the cuttlefish art car from burning man:





    Plenty of other expos:












    cool hat
    cool hat



    electromage
    electromage


    oh my, I had one of those when I grew up
    oh my, I had one of those when I grew up


    oh, I need one of those
    oh, I need one of those

    how does it even? :)
    how does it even? :)

    cool idea :)
    cool idea :)


    For some reason they also had cars:





    This was fun enough, but the new location is not great, I hope they change it back to the middle of the bay area, I don't care if it has to cost more as a result.



    More pages: November 2024 October 2024 September 2024 August 2024 July 2024 June 2024 May 2024 April 2024 March 2024 February 2024 January 2024 December 2023 November 2023 October 2023 September 2023 August 2023 July 2023 June 2023 May 2023 April 2023 March 2023 February 2023 January 2023 December 2022 November 2022 October 2022 September 2022 August 2022 July 2022 June 2022 May 2022 April 2022 March 2022 February 2022 January 2022 December 2021 November 2021 October 2021 September 2021 August 2021 July 2021 June 2021 May 2021 April 2021 March 2021 February 2021 January 2021 December 2020 November 2020 October 2020 September 2020 August 2020 July 2020 June 2020 May 2020 April 2020 March 2020 February 2020 January 2020 December 2019 November 2019 October 2019 September 2019 August 2019 July 2019 June 2019 May 2019 April 2019 March 2019 February 2019 January 2019 December 2018 November 2018 October 2018 September 2018 August 2018 July 2018 June 2018 May 2018 April 2018 March 2018 February 2018 January 2018 December 2017 November 2017 October 2017 September 2017 August 2017 July 2017 June 2017 May 2017 April 2017 March 2017 February 2017 January 2017 December 2016 November 2016 October 2016 September 2016 August 2016 July 2016 June 2016 May 2016 April 2016 March 2016 February 2016 January 2016 December 2015 November 2015 October 2015 September 2015 August 2015 July 2015 June 2015 May 2015 April 2015 March 2015 February 2015 January 2015 December 2014 November 2014 October 2014 September 2014 August 2014 July 2014 June 2014 May 2014 April 2014 March 2014 February 2014 January 2014 December 2013 November 2013 October 2013 September 2013 August 2013 July 2013 June 2013 May 2013 April 2013 March 2013 February 2013 January 2013 December 2012 November 2012 October 2012 September 2012 August 2012 July 2012 June 2012 May 2012 April 2012 March 2012 February 2012 January 2012 December 2011 November 2011 October 2011 September 2011 August 2011 July 2011 June 2011 May 2011 April 2011 March 2011 February 2011 January 2011 December 2010 November 2010 October 2010 September 2010 August 2010 July 2010 June 2010 May 2010 April 2010 March 2010 February 2010 January 2010 December 2009 November 2009 October 2009 September 2009 August 2009 July 2009 June 2009 May 2009 April 2009 March 2009 February 2009 January 2009 December 2008 November 2008 October 2008 September 2008 August 2008 July 2008 June 2008 May 2008 April 2008 March 2008 February 2008 January 2008 December 2007 November 2007 October 2007 September 2007 August 2007 July 2007 June 2007 May 2007 April 2007 March 2007 February 2007 January 2007 December 2006 November 2006 October 2006 September 2006 August 2006 July 2006 June 2006 May 2006 April 2006 March 2006 February 2006 January 2006 December 2005 November 2005 October 2005 September 2005 August 2005 July 2005 June 2005 May 2005 April 2005 March 2005 February 2005 January 2005 December 2004 November 2004 October 2004 September 2004 August 2004 July 2004 June 2004 May 2004 April 2004 March 2004 February 2004 January 2004 October 2003 August 2003 July 2003 May 2003 April 2003 March 2003 January 2003 November 2002 October 2002 July 2002 May 2002 April 2002 March 2002 February 2002 November 2001 October 2001 September 2001 August 2001 July 2001 June 2001 May 2001 April 2001 March 2001 February 2001 January 2001 December 2000 November 2000 October 2000 September 2000 August 2000 July 2000 June 2000 April 1999 March 1999 September 1997 August 1997 July 1996 September 1993 July 1991 December 1988 December 1985 January 1980

    Contact Email