diff options
Diffstat (limited to 'video')
-rwxr-xr-x | video/d8concat | 164 | ||||
-rwxr-xr-x | video/d8integrity | 9 | ||||
-rw-r--r-- | video/dvgrabscript | 1 | ||||
-rwxr-xr-x | video/rectape | 16 | ||||
-rwxr-xr-x | video/rectapehevc | 15 | ||||
-rwxr-xr-x | video/rectapevaapi | 13 | ||||
-rwxr-xr-x | video/screenrec | 24 | ||||
-rwxr-xr-x | video/vaapiencode | 9 | ||||
-rwxr-xr-x | video/viewintensitypro | 7 | ||||
-rwxr-xr-x | video/viewwebcam | 2 |
10 files changed, 0 insertions, 260 deletions
diff --git a/video/d8concat b/video/d8concat deleted file mode 100755 index bf8b608..0000000 --- a/video/d8concat +++ /dev/null @@ -1,164 +0,0 @@ -#!/bin/sh - -[ -d "$1" ] || exit 1 # Exit with error if not pointing to a directory - -# Misc -duration() { ffprobe -i "$1" -show_entries format=duration -v quiet -of csv="p=0" | tr -d . ; } -timebase="1/1000000" # duration function gives microseconds - -safename() { echo "$1" | tr -d '<>:"/\|?*' ; } - -# Temp dirs -workdir="$(mktemp -d "${TMPDIR:-/tmp}/combinetapesworkdir.XXXXXX")" - -cleanup() { rm -rf "$workdir" ; } -trap cleanup EXIT INT HUP QUIT TERM ALRM USR1 - -# Loop vars -current_date=0 -duration_total=0 -chapter_start=0 -chapter_time=0 -last_chapter_concurrent=0 - -# TODO this relys on the for loop looping in order - -# Either can be ran on single dv containing directory, or many dv containing directories -for dir in "$1"/ "$1"/*/; do - dir="${dir%/}" # Remove trailing slash - title="" - - if [ "$dir" != "$1" ]; then - title="$(basename "$dir")" - fi - if echo "$dir" | grep '/\*' >/dev/null; then - break - fi - - for tape in "$dir"/*.dv; do - date="$(echo "$(basename "$tape")" | grep -o '[0-9]*\.[0-9]*\.[0-9]*' | tr '.' '-')" - time="$(echo "$(basename "$tape")" | grep -o '[0-9]*-[0-9]*-[0-9]*' | tr '-' ':')" - - if [ "$title$date" != "$current_date" ]; then - # Reset vars - current_date="$title$date" - duration_total=0 - chapter_start=0 - chapter_time=0 - last_chapter_concurrent=0 - - # Create dirs - date_dir="$workdir/$current_date" - mkdir -p "$date_dir" - - files="$date_dir/files" - chapters="$date_dir/chapters" - - # Init chapters file - printf ";FFMETADATA1\n\n" > "$chapters" - - # title file - if [ "$title" ]; then - echo "$title" > "$date_dir/title" - fi - fi - - # Concat files - echo "file '$(realpath "$tape" | sed "s/'/'\\\\''/g")'" >> "$files" - - # Chapter marker - tape_duration=$(duration "$tape" | grep -o "[1-9][0-9]*") - duration_total=$(( $duration_total + $tape_duration )) - - # Only insert chapter marker if recordings are not concurrent. dvgrab - # splits files into 1gb chunks, or 291557933 microseconds of raw dv footage - # (with digital 8) - if [ $last_chapter_concurrent = 0 ]; then - chapter_time=$time - fi - if [ $tape_duration = 291557933 ]; then - last_chapter_concurrent=1 - continue - else - last_chapter_concurrent=0 - fi - - echo "[CHAPTER]" >> "$chapters" - echo "TIMEBASE=$timebase" >> "$chapters" - echo "START=$chapter_start" >> "$chapters" - echo "END=$duration_total" >> "$chapters" - echo "title=Section starts at $chapter_time" >> "$chapters" - echo >> "$chapters" - - chapter_start=$duration_total - done -done - - -# ffmpeg combine -out_dir=export -default_title=Untitled -mkdir -p "$out_dir" - -for date_dir in "$workdir"/*; do - date="$(echo "$date_dir" | grep -o "[0-9][0-9][0-9][0-9]-[0-9]*-[0-9]*")" - origin_tape="$(basename "$1")" - - # Files - title="$date_dir/title" - files="$date_dir/files" - chapters="$date_dir/chapters" - - # Nicely title - if [ -e "$title" ]; then - # title file - output_title="$(cat "$title")" - #elif echo "$origin_tape" | grep "^[^0-9].*[0-9]*-[0-9]*-[0-9]*" >/dev/null; then - # # Beginning descriptor - # output_title="$(echo "$origin_tape" | sed 's/ [0-9#].*//')" - #elif echo "$origin_tape" | grep "$date [A-Z]" >/dev/null; then - # # Date range or list of dates with titles (Title must be capitalized, 'to' must be made lowercase - # output_title="$(echo "$origin_tape" | sed "s/.*$date //; s/ to [0-9].*//; s/;.*//")" - else - # default - output_title=$default_title - fi - - output_title="$(echo "$output_title" | sed 's/\s*#[0-9]*$//')" # Remove sequence numbers - - # File name - if [ "$output_title" = "$default_title" ]; then - output_name="$date" - else - output_name="$date $output_title" - fi - - if [ -e "$out_dir/$output_name.mp4" ]; then - output=$(ls "$out_dir" | grep "$output_name *[0-9]*.mp4" | while read -r file; do - file_tape="$(mediainfo "$out_dir/$file" | sed -n 's/Comment.* - Origin tape: //p')" - if [ "$origin_tape" = "$file_tape" ]; then - echo 0 - break - fi - done) - if [ "$output" = 0 ]; then - continue - fi - output_name="$output_name $(ls "$out_dir" | grep "$output_name *[0-9]*.mp4" | wc -l)" - fi - - # Convert - #-c copy \ - #-metadata "title=$output_title" \ # Dont set title since it will be stuck if file is renamed - ffmpeg -hide_banner -nostdin \ - -n \ - -f concat -safe 0 -i "$files" \ - -i "$chapters" -map_metadata 1 \ - -c:v libx264 -crf 22 -preset medium -tune grain \ - -vf yadif \ - -c:a aac -b:a 320k \ - -metadata "date=$date" \ - -metadata "comment=tapes.tjkeller.xyz - Origin tape: $origin_tape" \ - "$out_dir/$output_name.mp4" - #"$out_dir/$output_name.mkv" -done diff --git a/video/d8integrity b/video/d8integrity deleted file mode 100755 index 717032b..0000000 --- a/video/d8integrity +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -find . -type f -name "*.dv" | while read file; do - ffmpeg -v error -i "$file" 2>&1 | grep "Concealing bitstream errors" >/dev/null && echo "$file" -done - -find . -type f -name "*.dv" | while read file; do - ffmpeg -v error -i "$file" -f null - 2>&1 | grep "Concealing bitstream errors" >/dev/null && echo "$file" -done diff --git a/video/dvgrabscript b/video/dvgrabscript deleted file mode 100644 index d82ba55..0000000 --- a/video/dvgrabscript +++ /dev/null @@ -1 +0,0 @@ -sudo dvgrab -autosplit -rewind -timestamp -format raw -csize 100000000 diff --git a/video/rectape b/video/rectape deleted file mode 100755 index 238f5de..0000000 --- a/video/rectape +++ /dev/null @@ -1,16 +0,0 @@ -#!/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 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 deleted file mode 100755 index c44d6d9..0000000 --- a/video/rectapehevc +++ /dev/null @@ -1,15 +0,0 @@ -#!/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 deleted file mode 100755 index 91c0709..0000000 --- a/video/rectapevaapi +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -[ -z "$1" ] && $0 untitled_$(ls | wc -l) - -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" diff --git a/video/screenrec b/video/screenrec deleted file mode 100755 index 8f65514..0000000 --- a/video/screenrec +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -newname() { defname="video"; name=$defname`ls | grep "^$defname[0-9]*" | wc -l | tr -d '[:blank:]'`.mkv; } -[ -z "$1" ] && newname || name="$1" -# Get screen info. I suspect this script wouldn't work too well with multiple screens. Somebody else can add that -resinfo="$(xrandr | grep '*' | tr -s ' ')" -vs="$(echo "$resinfo" | cut -d' ' -f2)" -fr="$(echo "$resinfo" | sed 's/.*\s\([0-9]*\.[0-9]*\)\*.*/\1/')" -# -i is screen coordinates for top-leftmost screen -# Encoder settings are basically lossless and optimized for good speed, decent size, and great quality -# yuv444p colorspace is needed for a 24 bit rgb monitor, change for hdr. yuv420p is the default and is good for video, but is inadequate for screencasts -ffmpeg -hide_banner \ - -video_size $vs \ - -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 \ - "$name" diff --git a/video/vaapiencode b/video/vaapiencode deleted file mode 100755 index ae079f2..0000000 --- a/video/vaapiencode +++ /dev/null @@ -1,9 +0,0 @@ -#!/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" diff --git a/video/viewintensitypro b/video/viewintensitypro deleted file mode 100755 index cd2d73d..0000000 --- a/video/viewintensitypro +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh -#for mod in blackmagic blackmagic-io; do doas modprobe $mod; done -#doas rc-service DesktopVideoHelper start - -ffplay \ --f decklink -format_code ntsc -i "Intensity Pro" \ --vf yadif diff --git a/video/viewwebcam b/video/viewwebcam deleted file mode 100755 index c56d879..0000000 --- a/video/viewwebcam +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -ffplay -f v4l2 -input_format mjpeg -video_size 1920x1080 -framerate 30 -i /dev/video0 |