summaryrefslogtreecommitdiff
path: root/video
diff options
context:
space:
mode:
authorTimmy Keller <tjk@tjkeller.xyz>2022-07-07 15:55:54 -0500
committerTimmy Keller <tjk@tjkeller.xyz>2022-07-07 15:55:54 -0500
commit38ebf64b07f99de9464905ee5f8aaee1148b6a4f (patch)
tree1617ef65c4bd54db8f48cf70122ef7b923c623ab /video
parent35a2dd3734f1d31060fe28837cf0e1d947c8d6f4 (diff)
downloadscripts-38ebf64b07f99de9464905ee5f8aaee1148b6a4f.tar.xz
scripts-38ebf64b07f99de9464905ee5f8aaee1148b6a4f.zip
tons of changes from when website was down
Diffstat (limited to 'video')
-rwxr-xr-xvideo/ffconcat30
-rwxr-xr-xvideo/rectape18
-rwxr-xr-xvideo/rectapehevc15
-rwxr-xr-xvideo/rectapevaapi12
-rwxr-xr-xvideo/screenrec4
-rwxr-xr-xvideo/slideshow26
-rwxr-xr-xvideo/vaapiencode9
7 files changed, 86 insertions, 28 deletions
diff --git a/video/ffconcat b/video/ffconcat
new file mode 100755
index 0000000..34e6550
--- /dev/null
+++ b/video/ffconcat
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+trap cleanup EXIT
+
+ccf=/tmp/concatfile.
+cleanup() { rm ${ccf}*; }
+concat() {
+ outfile="output$i.mkv"
+ concatfile=$(mktemp ${ccf}XXXXXX)
+ dir="$(pwd)"
+ for video in $vidfiles; do
+ echo "file '$dir/$video'" >> $concatfile
+ done
+ cat $concatfile | sort > ${concatfile}_ # Sort concatfile so videos are ordered correctly
+ ffmpeg -v error -f concat -safe 0 -i ${concatfile}_ -c copy $outfile
+}
+
+for video in "$@"; do
+ codechash=$(ffprobe -v quiet -show_format -show_streams "$video" | \grep 'width\|height\|codec' | md5sum | cut -d' ' -f1)
+ [ -z "$prevhash" ] && prevhash=$codechash
+ if [ $prevhash = $codechash ]; then
+ vidfiles="$video${vidfiles:+ }$vidfiles"
+ else
+ [ -z "$i" ] && i=0
+ concat
+ vidfiles=""
+ i=$((i+1))
+ fi
+done
+concat
diff --git a/video/rectape b/video/rectape
index fa631eb..238f5de 100755
--- a/video/rectape
+++ b/video/rectape
@@ -5,12 +5,12 @@ for mod in blackmagic blackmagic-io; do doas modprobe $mod; done
#doas rc-service DesktopVideoHelper start
ffmpeg \
--f decklink -format_code ntsc -i "Intensity Pro" \
--c:v libx264 \
--preset medium \
--qmin 6 -qmax 18 -qdiff 4 \
--vf yadif \
--c:a aac -b:a 384k \
--metadata "title"="$1" \
--metadata "comment=tapes.tjkeller.xyz" \
-"$1.mkv"
+ -f decklink -format_code ntsc -i "Intensity Pro" \
+ -c:v libx264 \
+ -preset medium \
+ -qmin 6 -qmax 18 -qdiff 4 \
+ -vf yadif \
+ -c:a aac -b:a 384k \
+ -metadata "title"="$1" \
+ -metadata "comment=tapes.tjkeller.xyz" \
+ "$1.mkv"
diff --git a/video/rectapehevc b/video/rectapehevc
new file mode 100755
index 0000000..c44d6d9
--- /dev/null
+++ b/video/rectapehevc
@@ -0,0 +1,15 @@
+#!/bin/sh
+if [ -z "$1" ]; then $0 untitled_$(ls | wc -l); exit; fi
+
+for mod in blackmagic blackmagic-io; do doas modprobe $mod; done
+#doas rc-service DesktopVideoHelper start
+
+ffmpeg \
+ -f decklink -format_code ntsc -i "Intensity Pro" \
+ -c:v libx265 \
+ -qmin 6 -qmax 18 -qdiff 4 \
+ -vf yadif \
+ -c:a flac \
+ -metadata "title"="$1" \
+ -metadata "comment=tapes.tjkeller.xyz" \
+ "$1.mkv"
diff --git a/video/rectapevaapi b/video/rectapevaapi
index 4ddf868..91c0709 100755
--- a/video/rectapevaapi
+++ b/video/rectapevaapi
@@ -5,9 +5,9 @@ for mod in blackmagic blackmagic-io; do doas modprobe $mod; done
doas rc-service DesktopVideoHelper start
ffmpeg -hwaccel auto -vaapi_device /dev/dri/renderD128 \
--f decklink -format_code ntsc -i "Intensity Pro" \
--c:v hevc_vaapi \
--vf "yadif,format=nv12,hwupload" \
--c:a libopus -b:a 384k \
--metadata "title"="$1$title" \
-"$1$title.mkv"
+ -f decklink -format_code ntsc -i "Intensity Pro" \
+ -c:v hevc_vaapi \
+ -vf "yadif,format=nv12,hwupload" \
+ -c:a libopus -b:a 384k \
+ -metadata "title"="$1$title" \
+ "$1$title.mkv"
diff --git a/video/screenrec b/video/screenrec
index fa6b628..8f65514 100755
--- a/video/screenrec
+++ b/video/screenrec
@@ -13,7 +13,11 @@ ffmpeg -hide_banner \
-framerate $fr \
-f x11grab \
-i :0.0+0,0 \
+ -f alsa -channels 1 -sample_rate 48000 \
+ -i hw:3 \
-c:v libx264 \
+ -c:a libopus \
+ -b:a 128k \
-preset ultrafast \
-qp 1 \
-pix_fmt yuv444p \
diff --git a/video/slideshow b/video/slideshow
index d1a9647..4cd1f61 100755
--- a/video/slideshow
+++ b/video/slideshow
@@ -1,15 +1,15 @@
#!/bin/sh
cat "$@" | ffmpeg -y \
--framerate 0.20 -loop 1 \
--f image2pipe \
--i - \
--c:v h264_amf -quality quality -tune stillimage \
--qp_i 12 -qp_p 28 -qp_b 28 \
--vf \
-fps=1,\
-framerate=25:\
-interp_start=0:\
-interp_end=255:\
-scene=100 \
--metadata "title"="$(pwd | sed "s/.*\///")" \
-output.mkv
+ -framerate 0.20 -loop 1 \
+ -f image2pipe \
+ -i - \
+ -c:v libx264 -quality quality -tune stillimage \
+ -qmin 12 -qmax 28 -qdiff 16 \
+ -vf \
+ fps=1,\
+ framerate=25:\
+ interp_start=0:\
+ interp_end=255:\
+ scene=100 \
+ -metadata "title"="$(pwd | sed "s/.*\///")" \
+ output.mkv
diff --git a/video/vaapiencode b/video/vaapiencode
new file mode 100755
index 0000000..ae079f2
--- /dev/null
+++ b/video/vaapiencode
@@ -0,0 +1,9 @@
+#!/bin/sh
+ffmpeg -hwaccel vaapi -hwaccel_output_format vaapi -vaapi_device /dev/dri/renderD128 \
+ -ss 60 \
+ -i "$1" \
+ -t 60 \
+ -c:v h264_vaapi \
+ -b:v 1000k \
+ -c:a libopus -b:a 128k \
+ "h264_$1.mkv"