Sunday, 19 February 2017

Re-encode audio to AAC, in a bunch of mkv files..

..as fast as bandwidth to the fileserver can allow, running encodes in parallel up to amount of processors. AAC seems compatible with HW decoders everywhere + also with Chromebooks, which invited me to create this:

#!/bin/bash -e

TEMP=/fast/temp
DOWN=2 #allow 1 more than max 'uploads' to keep encoding busy
UP=1 #limit in order to write in a streamlined fashion rather than trashing NAS/FS, due to potential race condition +1 might happen

[[ -z $1 ]] && echo "Usage: $0 <file> [file] [file].." && exit 0
FAACS=$(nproc)
PGID=$$ #limit scope for pgrep
cd "$TEMP"

sleeprnd() { echo $((RANDOM % ($(pgrep -xcg $PGID sleep)+1) +1)); } #random secs between 1 .. amount of sleep processes we're running
waitcount() { while [[ $(pgrep -xcg $PGID $1) -ge $2 ]]; do sleep $(sleeprnd); done; }
re-encode() {
        ORIG="$1"
        BASE="$(basename "$ORIG" .mkv)"
        LOCAL="$BASE"_orig.mkv
        DEST="$(dirname "$ORIG")"/"$BASE"_aac.mkv
        #now wait for ample space to be available @TEMP
        until [[ $(df --output=avail "$TEMP" | tail -n 1) -gt $(( 7 * $(du "$ORIG" | sed -e 's/\t.*//g') )) ]]; do sleep $(sleeprnd); done
        waitcount cp $DOWN; cp -v "$ORIG" "$LOCAL"
        mkvmerge --no-audio "$LOCAL" -o "$BASE"_noaudio.mkv
        for TRACK in $(mkvmerge -i "$LOCAL" | grep ': audio' | sed -e 's/:.*//g' -e 's/.* //g'); do
                mkvextract tracks "$LOCAL" $TRACK:"$BASE"_audio
                waitcount faac $FAACS; ffmpeg -v 0 -i "$BASE"_audio -f wav - \
                        | faac -b 160 - -o "$BASE"_audio_$TRACK.aac &>/dev/null
        done
        mkvmerge "$BASE"_noaudio.mkv "$BASE"_audio_*.aac -o "$BASE".new.mkv
        rm "$BASE"_*
        waitcount cp $UP; cp -v "$BASE".new.mkv "$DEST"
        touch "$DEST" -r "$ORIG"
        #mv "$DEST" "$ORIG"
        echo "$ORIG" >>/dev/shm/ramdisk/log
        rm "$BASE".new.mkv
}

while [[ -n "$1" ]]; do
        re-encode "$1" &
        sleep 1
        shift
done

wait

Monday, 31 October 2016

systemctl, journalctl breaking bad

Since systemctl and journalctl are bad by breaking scrolling by default (using a pager).

Do this as root to become sane again:
echo SYSTEMD_PAGER= >>/etc/environment

Log out and back in.

Friday, 5 August 2016

My comment on the video "The Quantum Experiment that Broke Reality", belong on here as well.
- It is about the double slit experiment.

You might be able to predict the "landing point" if you knew the state of the peaks in the "waving" screen, the slits and the buckyballs- how they waved (could "look" something like water in near zero gravity). ..And you might be able to "set" the states using oscillating magnetic fields.

Friday, 18 March 2016

What's the matter with particle-waves?

If waves did turn into particles some of the time, a Faraday cage could not block them out.

makemkv wrapper with auto updater

Installs to home folder, creates usr folder under $HOME/.
Does not require root.
Requires xclip to dump latest beta key to "selection" (middle click "clipboard").
Launches makemkv if build succeeded or if already at latest version.

#!/bin/bash

echo $HOME
cd $HOME
URL='http://www.makemkv.com/forum2/viewtopic.php?f=3&t=224'
[[ -n "$1" ]] \
        && VERSION=$1 \
        || VERSION=$(curl --silent "$URL" | grep MakeMKV.*for.Linux.is | head -n 1 | sed -e 's/.*MakeMKV //g' -e 's/ .*//g')

KEY=$(curl --silent 'http://www.makemkv.com/forum2/viewtopic.php?f=5&t=1053'| grep T-|sed -e 's/.*codecontent..//g' -e 's/..div. .*//g')
echo "key: $KEY"
echo "$KEY" | xclip

if [[ "$VERSION" = "$(cat $HOME/.makemkv-version)" ]]; then
        echo MakeMKV is up to date.
else
        for r in oss bin; do
                wget -c "http://www.makemkv.com/download/makemkv-$r-$VERSION.tar.gz"
                tar xf makemkv-$r-$VERSION.tar.gz
                cd makemkv-$r-$VERSION
                [[ "$r" = "oss" ]] && ./configure || { mkdir -p tmp; echo accepted >tmp/eula_accepted; }
                make -j 17 install DESTDIR=$HOME/ || { echo -e "###\n### Error occurred, maybe missing build deps?\n### $URL\n###"; sleep 30; exit 1; }
                cd ..
        done
fi

env LD_LIBRARY_PATH=usr/bin:usr/lib:usr/share:usr QT_PLUGIN_PATH=/usr/lib/kde4/plugins:$QT_PLUGIN_PATH usr/bin/makemkv \
        && echo $VERSION | tee $HOME/.makemkv-version

Tuesday, 20 March 2012

Gravity, take 2


When I am currently visualizing gravity, I see it as space being consumed directly by matter which results in photons, neutrinos or tiny maybe yet undetected particles being created in the process by capturing and intertwining bits of space.
As a consequence, control over this mechanism could be used to construct a device for propulsion taking in space from a single direction.