Category Archives: Movies

Streaming, recording, videocall and more

I use a bunch of different tools to create video’s or stream stuff.
Below is some info about those tools.

Software:

  • Kdenlive – Linear video editor (Adding text, transitions, etc)
  • VLC media player – For example to embed video in OBS
  • OBS – Opensource Broadcast software, i use this also to record my screen – You can use this as a virtual webcam, so you can fool around with the image.
  • Audacity – For editing audio
  • QPrompt – Teleprompter

For OBS i made a shortcut/macro keyboard thingy. Based on an arduino pro mini. (Which can connect to a computer acting like a HID, for example a keyboard or mouse)
I use this one to emulate keystrokes which i’ve configured in OBS to do:

  • Switch to scene 1
  • Switch to scene 2
  • Transition from scene to scene
  • Start streaming
  • Start recording
  • Mute
  • [empty] – sometimes used as “start virtual webcam”
  • Slow transition
  • Blank screen
  • Display overlay text

(Originally i planned to do this with a Nextion Display)

Mobile Phone holder, like a third hand

Sometimes a Nikon on a tripod is better.

I don’t have a dedicated webcam for my battlestation. So i mainly use a Actioncam (4k) which can be connected via USB. Or i use a Nikon together with the Camlink.

So i record using my mobile, webcam, screen record
Edit using Audacity and Kdenlive.

When recording with OBS i use MP4 as a container, this is a no-brainer to embed in websites. Use mkv when recording long shots, or when connections can break. (A mp4 will be corrupted)

ffmpeg -i streamrecord.mkv -codec copy putinmp4container.mp4

I’ve played around with StreamFX which gives you some nice extra tools.
(There are loads of plugins to download)
Using websockets is on my todolist.

A little OBS trick without green screen

StreamFX example

Working on a blender animation.
Realtime screen grab, which gets 3D placed in a scene.

Kdenlive and credit scroller

For a video project iḿ working on, i needed a vertical credit scroller.
I’ve put together a little howto.

Tools used:

  • OBS – Recording the howto
  • Kdenlive – generating the Credit scroller, and recording voiceover howto clip
  • Vlc

And this is the result

Movies and more.

We love movies, and watch anything.

I’ve posted about genres:
https://www.henriaanstoot.nl/2021/03/23/movie-genres/

And we are watching the whole top 250 of imdb.

Now i wanted to have a list of movies by Actor or Director.
So i could see if there are more movies i have to watch
So today i started to figure out how.

So i made a Google Sheet and scraped websites with the needed information.

  • Create a new sheet
  • Make a tab for top-dutch, actor or director
  • Do a search of things you want to display
  • A search of actor and filmography will probably work (imdb of wikipedia)
  • copy the url and make a note of which table it is, first second or more.
  • Paste in the sheet the following at A1
=IMPORTHTML("https://en.wikipedia.org/wiki/Rutger_Hauer_filmography","table",1)

Where the last number (this case 1) is the number of table in the page.

Now you can color code those entries.

VR 360 180 3D

First tests with a Vuze Xr. (unedited unoptimized)

It can record 360 movies or take 360 degrees pictures.
Besides that it can do stereoscopic recording for using in VR glasses. (2D 180 tested in a oculus vr set)
In the past i made those 360 degrees pictures manually using Hugin for example. Also stereoscopic images, using two pictures.
But it was a lot of work, and most of the times the quality wasn’t worth it.

Another test i did recently was
https://www.henriaanstoot.nl/2022/01/02/ipcam-sphere-panorama/

Soon more

Wanted to make a videowall for a video project

I’ve seen some commercial solutions, and some free blender solutions which where too complex or too much hassle.

I’m not paying anything when you can do it yourself for free.
And i wanted a easy to setup wall, using movieclips or pictures.

So below is a blender howto

Above also shows howto enable displaying keypresses for making howto movies and a plugin for distributing objects.

Little example using method above

English humour

One of my first encounters with English Humour was when my wonderful teacher Mrs Walraven rolled in the old VCR-on-cart when i was going to technical secondary school (MTS)

She showed us Monty Python, Faulty Towers and Black Adder. THIS is the humour i like, this is for me!

So from that point on i wanted to see English Humour.

There are standup comedians i like, Billy Connolly (seen him live), Eddie Izzard (seen him live), Michael McIntyre and Jimmy Carr (tickets!!!) to name a few.
Life stories, wierd confronting idea’s and realisations of things , Real life observations and Dark humour. (in that order)

Billy Connolly 2016

But i wanted to tell about TV shows (i try to place them in order):

Monty Python
One of the first things i saw, great stuff. Liked the movies also.

Black Adder
Loved the way it was the character Rowan Atkinson played got smarter every ‘season’, and Tony Robinson (Baldrick) was getting dumber.
The last ‘season’ WWI was when all things where exactly right.
(Yearly rewatch)

Not the nine o’clock news
This one i need to review

The Young Ones
A series that broke boundaries like Monty Python.
First time i notished the perfect duo, Rik Mayall and Ade Edmonson

Fawlty Towers
To few episodes, but each a brilliant piece of work.
Superb characters! (Yearly rewatch)

Red dwarf
Great stuff, loved the characters. And the space setting

Mr Bean
Great (silent) performance of Rowan Atkinson.
Liked his One man show more i think.

Bottom
Then i learned about Bottom. It was the genius jokes and performances.
The 5 liveshows where even more amazing. (Yearly rewatch)
Also i have to mention the movie : Guest House Paradiso

So i went looking for more:

Filthy Rich & Catflap
Secret Policeman’s Ball
(not really a TV series)

Then i came across a oldie …

At last the 1948 show
A predecessor of Monty Python with Marty Feldman

Do not adjust your set
Also with guys who did Monty Python later on.

Today i was in Uist on holiday in Scotland, talking about these show.
The B&B owner said “Do you know – Ripping Yarns???”
So that’s the next to find and view!

Others i have to mention:
Alas Smith and Jones
The Bleak Old Shop of Stuff
Allo allo


The location where the bench was from the intro of Bottom the TV series. Now a plaque is there, which reads: “Rik Mayall. 1958-2014. Punched his friend in the balls on a bench near this spot.”

New NFO generator using yad

old post : https://www.henriaanstoot.nl/2021/02/08/kodi-movies-and-metadata/

Added poster art generator at the bottom of this page

Made a new NFO generator to get private movies properly scraped in kodi.

What does it do?

  • Genererates NFO for Kodi
  • Goes recursive though given directories
  • Skips movies with existing nfo
  • Previews the movie using VLC (So you can see what it is you are adding information for)
  • Tries to make a nice title from filename and year
  • Gets year from metadata
  • Fills tags from yad forms
  • next version i will add a poster generator from another nfo script i made. (It allready works, but i want to add a frame selector.
  • Adds new genre/actors/places if they dont exists
#!/bin/bash
# Needs mediainfo and yad
#find /media/geisha/private/Media/video/ -type f | egrep -i "mkv$|avi$|mpg$|mp4$|ogv$" | while read ; do
find $1 -type f | egrep -i "mkv$|avi$|mpg$|mp4$|ogv$" | while read ; do
# check if nfo exists
short=$(echo  "$REPLY" | rev | cut -f-2 -d/ | rev)
file=$( echo "$REPLY" | rev | cut -f2 -d. | rev).nfo
filename=$( basename "$REPLY" | cut -f1 -d. )
if [ -f "$file" ] ; then
	echo "$file found .. so skipping"
else
	echo "Not found $file"
nohup vlc "$REPLY" &
# check if find date
year=$(mediainfo "$REPLY" | grep Encoded |head -1 2>/dev/null | awk '{ print $5 }' | cut -c-4)
yeartitle="$year - "
if [ "$year" == "" ] ; then 
	year=$(echo $file | tr -cd '2[0-9][0-9][0-9]')
	if [ ! "$year" == "" ] ; then 
		#no year in filename
		yeartitle=""
	else
		yeartitle="$year - "
	fi
	
fi
# create nfo
forminfo=$(yad --title="nfo form $short" --text="Please enter:" --form --field="Title" --field="Year" --field="Placenew" --field="Genrenew" "$yeartitle $filename" "$year" "" "" --form --columns=2 --item-
separator="," --field="Place":CB --field="Genre":CB "$(paste -s -d"," < places)" "$(paste -s -d"," < genres)")
#echo $forminfo
#2020 - |2020|placenem|genrene|Hilversum|Vacation|
title=$(echo $forminfo | cut -f1 -d\|)
year=$(echo $forminfo | cut -f2 -d\|)
placenew=$(echo $forminfo | cut -f3 -d\|)
genrenew=$(echo $forminfo | cut -f4 -d\|)
place=$(echo $forminfo | cut -f5 -d\|)
genre=$(echo $forminfo | cut -f6 -d\|)
# Plot
plot=$(yad --form --field="Text::TXT" --geometry="600x200")
#plot=$( echo $plot | cut -f1 -d\\)
#plot=$( echo $plot | cut -f1 -d|)
# Actors
actors=$(yad --list  --geometry="200x480"  --print-all --column= --column=:chk --column= --column=:chk $( cat actors | cut -f1 -d" "  |while read user; do echo -n "$user false " ;done ) )
echo $actors | grep "NEW|TRUE" >/dev/null 
if [ $? -eq 0 ] ; then
vi actors
actors=$(yad --list  --geometry="200x480"  --print-all --column= --column=:chk --column= --column=:chk $( cat actors  | cut -f1 -d" " |while read user; do echo -n "$user false " ;done ) )
fi
if [ ! "$placenew" == "" ] ; then
	place="$placenew"
	echo "$placenew" >> places
fi
if [ ! "$genrenew" == "" ] ; then
	genre="$genrenew"
	echo "$genrenew" >> genres
fi
(
echo '<?xml version="1.0" encoding="utf-8" standalone="yes"?>'
echo "<movie>"
echo "  <plot>$plot</plot>"
echo "  <outline />"
echo "  <title>$title</title>"
echo "  <year>$year</year>"
echo "  <country>$place</country>"
cat actors | cut -f1 -d" " | while read actorname ; do
	echo $actors | grep "$actorname|TRUE"  >/dev/null
		if [ $? -eq 0 ] ; then
		name=$(grep $actorname actors | cut -f2 -d\" )
		echo "<actor>"
		echo "  <name>$actorname</name>"
		echo "  <role>$name</role>"
		echo "</actor>"
	fi
done
echo "  <genre>$genre</genre>"
echo "  <art>"
echo "  </art>"
echo "</movie>" 
) > "$file"  
fi
killall vlc
done

And some files

> actors
Firstname "Firstname Lastname"
> genres
Vacation
Pruts
> places
Netherlands

Poster generator (select poster thumbnail to use)

Generates 3 poster images and 3 thumbs to select.
Thumbs are 10 seconds into the movieclip, midway and on 2/3

short=$(basename $1 | cut -f1 -d.)

three=$(( $(mediainfo --Inform="Video;%Duration%" $1) / 3000 ))
rm -f thumb*.jpg poster*.jpg
first=10
#ffmpeg -ss $first -i $1 -vf scale=320:-1 -frames:v 1 -q:v 2 thumb1.jpg  -hide_banner -loglevel error
ffmpeg -ss $first -i $1 -frames:v 1 -q:v 2 thumb1.jpg  -hide_banner -loglevel error
second=$(( $three  ))
ffmpeg -ss $second -i $1 -frames:v 1 -q:v 2 thumb2.jpg  -hide_banner -loglevel error
third=$(( $three * 2 ))
ffmpeg -ss $third -i $1 -frames:v 1 -q:v 2 thumb3.jpg  -hide_banner -loglevel error
convert thumb1.jpg -resize x1000 -gravity center -crop 666x1000 poster1.jpg
convert thumb1.jpg -resize x320 -gravity center -crop 212x320 thumb1s.jpg
convert thumb2.jpg -resize x1000 -gravity center -crop 666x1000  poster2.jpg
convert thumb2.jpg -resize x320 -gravity center -crop 212x320 thumb2s.jpg
convert thumb3.jpg -resize x1000 -gravity center -crop 666x1000  poster3.jpg
convert thumb3.jpg -resize x320 -gravity center -crop 212x320 thumb3s.jpg


out=$(yad --form --title="Select poster thumbnail"  --geometry="+0+0" \
       --columns="3" \
       --field="!thumb1s-1.jpg! :fbtn" "echo poster1-1.jpg"  \
       --field="!thumb2s-1.jpg! :fbtn" "echo poster2-1.jpg"  \
       --field="!thumb3s-1.jpg! :fbtn" "echo poster3-1.jpg"
)
if [ ! "$out" == "|||" ] ; then
choice=$(echo $out | sed s/\ \|\|\|//g | rev | cut -f1 -d" " | rev)
echo cp $choice ${short}-poster.jpg
fi

Add effect to movie using bash

mkdir -p videoframessource videoframes
ffmpeg -r 60 -i sweden.mp4 videoframessource/%05d.png
cd videoframessource
ls *png | while read file ; do ../convert2comic $file ; echo -n "." ;done ; echo ""
ffmpeg -f image2 -r 60  -i videoframes/%05d.png  -vcodec libx264 final.mp4
#!/bin/bash
# convert script .. call me convert2comic
convert -quiet $1 +repage -depth 8 -selective-blur 0x5+10% ./tmp1
convert ./tmp1 -level 0x80% -colorspace gray -posterize 6 -depth 8 -colorspace sRGB ./tmp2
convert ./tmp1 '(' ./tmp2 -blur 0x1 ')' '(' -clone 0 -clone 1 -compose over -compose multiply -composite -modulate 100,150,100 ')' '(' -clone 0 -colorspace gray ')' '(' -clone 3 -negate -blur 0x2 ')' '(' -c
lone 3 -clone 4 -compose over -compose colordodge -composite -evaluate pow 4 -threshold 90% -median 1 ')' -delete 0,1,3,4 -compose over -compose multiply -composite ../videoframes/$1
# Another nice effect
convert frame.png \( +clone -negate -blur 0x6 \) -compose ColorDodge -composite -modulate 100,0,100 out.png