Marc's Public Blog - Linux Hacking


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



This page has a few of my blog entries about linux, but my main linux page is here
Picture of Linus

Here is a list of older linux event reports I made before my blog was started, then the rest are below
1996/11/18-21:Linux Pavillion Comdex Fall 1996 (photos only). I've been going since then to help at the linux pavillion.
1997/11/18-21: Linux Pavillion Comdex Fall 1997 (photos only)
1998/05/28-30: Linuxexpo 1998 (photos only)
1998/11/16-20: Linux Pavillion Comdex Fall 1998 (full report)
1998/11/11: Silicon Valley Tea Party (report with pictures)
1999/02/15: Windows Refund Day (report with pictures)
1999/03/20: SVLUG KTEH night (photos only)
1999/03/01-04: LinuxWorld Expo Winter 99 (complete report with many pictures)
1999/03/31: Mozilla Party one year anniversary (photos only)
1999/05/18-22: Linuxexpo 1999 (complete report with many pictures)
1999/06/07: June 99 Balug meeting with Linus
1999/08/09-12: LinuxWorld Expo Summer 99 (complete report with many pictures)
1999/11/15-19: Linux Business Show at Comdex Fall 1999 (full report with pictures)
2000/08/14-17: LinuxWorld Expo Summer 2000 (complete report with many pictures)
2001/01/17-20: Linux.conf.au/LCA 2001 (complete report with pictures)
2001/07/25-28: OLS 2001 (photos only)
2001/08/25: Linux 10th Anniversary (report with pictures)
2001/09/27-30: LinuxWorld Expo Summer 2001 report with pictures)
2001/11/05-10: ALS 2001 (photos only)
2002/06/26-29: OLS 2002 (photos only)
2003/01/20-25: LCA 2003 (photos only)
2003/07/23-26: OLS 2003 (photos only)
2004/01/12-17: LCA 2004 (photos only)
2004/07/21-24: OLS 2004 (photos only)
2005/04/18-23: LCA 2005 (photos only)
2006/01/24-28: LCA 2006 (photos only)
2007/01/17-21: LCA 2007 (photos only)

Here is a list of all the talks I've given:

And below are my blog posts:

Table of Content for linux:

More pages: July 2002 February 2004 March 2004 November 2004 April 2005 August 2005 January 2006 July 2006 August 2007 November 2007 January 2008 October 2008 November 2008 December 2008 January 2009 May 2009 July 2009 August 2009 September 2009 November 2009 December 2009 January 2010 March 2010 April 2010 June 2010 August 2010 October 2010 January 2011 July 2011 August 2011 December 2011 January 2012 March 2012 May 2012 August 2012 December 2012 January 2013 March 2013 May 2013 September 2013 November 2013 January 2014 March 2014 April 2014 May 2014 October 2014 January 2015 March 2015 May 2015 January 2016 February 2016 June 2016 July 2016 August 2016 October 2016 January 2017 September 2017 January 2018 March 2018 December 2018 January 2019 January 2020 May 2020 January 2021 September 2021 March 2023 April 2023 December 2023 June 2024 November 2024



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/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


    More pages: July 2002 February 2004 March 2004 November 2004 April 2005 August 2005 January 2006 July 2006 August 2007 November 2007 January 2008 October 2008 November 2008 December 2008 January 2009 May 2009 July 2009 August 2009 September 2009 November 2009 December 2009 January 2010 March 2010 April 2010 June 2010 August 2010 October 2010 January 2011 July 2011 August 2011 December 2011 January 2012 March 2012 May 2012 August 2012 December 2012 January 2013 March 2013 May 2013 September 2013 November 2013 January 2014 March 2014 April 2014 May 2014 October 2014 January 2015 March 2015 May 2015 January 2016 February 2016 June 2016 July 2016 August 2016 October 2016 January 2017 September 2017 January 2018 March 2018 December 2018 January 2019 January 2020 May 2020 January 2021 September 2021 March 2023 April 2023 December 2023 June 2024 November 2024

    Contact Email