Skip to content

Instantly share code, notes, and snippets.

View alexarje's full-sized avatar

Alexander Refsum Jensenius alexarje

View GitHub Profile
@alexarje
alexarje / mergevideos.sh
Last active March 31, 2022 18:29
Merge and compress a collection of video files. This works particularly well for video recordings that have been split across multiple files due to file size limitations.
#!/bin/bash
## Make list of video files
TMPFILE=$(mktemp -p .) || exit 1
for file in *.{mp4,MP4}
do
echo file \'$file\' >> $TMPFILE
done
ffmpeg \
-i dance_addition.mp4 \
-i dance_and.mp4 \
-i dance_average.mp4 \
-i dance_blend.mp4 \
-i dance_burn.mp4 \
-i dance_darken.mp4 \
-i dance_difference.mp4 \
-i dance_divide.mp4 \
-i dance_dodge.mp4 \
ffmpeg -i dance.avi -filter_complex "tblend=all_mode=addition" dance_addition.mp4
ffmpeg -i dance.avi -filter_complex "tblend=all_mode=grainmerge" dance_grainmerge.mp4
ffmpeg -i dance.avi -filter_complex "tblend=all_mode=and" dance_and.mp4
ffmpeg -i dance.avi -filter_complex "tblend=all_mode=average" dance_average.mp4
ffmpeg -i dance.avi -filter_complex "tblend=all_mode=burn" dance_burn.mp4
ffmpeg -i dance.avi -filter_complex "tblend=all_mode=darken" dance_darken.mp4
ffmpeg -i dance.avi -filter_complex "tblend=all_mode=difference" dance_difference.mp4
ffmpeg -i dance.avi -filter_complex "tblend=all_mode=grainextract" dance_grainextract.mp4
ffmpeg -i dance.avi -filter_complex "tblend=all_mode=divide" dance_divide.mp4
ffmpeg -i dance.avi -filter_complex "tblend=all_mode=dodge" dance_dodge.mp4
@alexarje
alexarje / mxf-folder2mp4.sh
Last active May 3, 2023 15:35
Convert a folder of MXF files to one MP4 file with FFmpeg
#!/bin/bash
# Script for converting a folder of MXF video files to different to a single MP4 file.
# Alexander Refsum Jensenius, RITMO, University of Oslo
# v0.1 2019-11-03
# Find and move all MXF files to the "root" (where the script is run from)
find . -name "*.MXF" -exec mv {} . ";"
# Create list of files to be used for concatenation
@alexarje
alexarje / mxf2mp4.sh
Last active February 12, 2024 13:28
Convert MXF files to MP4 using FFmpeg
#!/bin/bash
# Script for converting MXF video files to different to other file formats.
for i in *.MXF; do
if [ -e "$i" ]; then
file=`basename "$i" .MXF`
# MP4 file with default settings + deinterlacing
ffmpeg -i "$i" -c:v libx264 -vf yadif "$file.mp4"
@alexarje
alexarje / circle_image.sh
Created September 13, 2019 22:15
Create circular thumbnails in the terminal
#!/bin/bash
for i in *.jpg;
do
name=`echo $i | cut -d'.' -f1`;
convert "$i" \
\( +clone -threshold -1 -negate -fill white -draw "circle 100,100 100,0" \) \
-alpha off -compose copy_opacity -composite $name.png;
done
@alexarje
alexarje / Rotate multiple JPEG files
Created May 19, 2019 16:55
Automagically rotate multiple images based on EXIF descriptors
find . *.jpg -exec jhead -autorot {} \;
@alexarje
alexarje / sortimages.sh
Created November 25, 2018 11:37
Sort images based on direction (portrait/landscape)
# Based on: https://unix.stackexchange.com/questions/294341/shell-script-to-separate-and-move-landscape-and-portrait-images
# make directories
mkdir portraits
mkdir landscapes
# Check that all images have correct rotation
jhead -autorot *.jpg
jhead -autorot *.JPG
@alexarje
alexarje / trimvideofile.sh
Last active December 19, 2019 17:34
Trim video using ffmpeg
ffmpeg -i input.mp4 -ss 01:10:27 -to 02:18:51 -c:v copy -c:a copy output.mp4
@alexarje
alexarje / multieps2pdf.sh
Last active March 8, 2018 18:40
Convert multiple EPS files to PDF
find . -name "*.eps" -exec epstopdf {} ";"