diff options
author | Mattias Andrée <m@maandree.se> | 2024-11-26 22:08:22 +0100 |
---|---|---|
committer | Mattias Andrée <m@maandree.se> | 2024-11-26 22:08:22 +0100 |
commit | 5da5e89beec8ad11f3dc7c9598ab69d97ad82468 (patch) | |
tree | dcb65e9afe179583dec3a54fd142dc2b8f483e00 | |
download | ffutils-5da5e89beec8ad11f3dc7c9598ab69d97ad82468.tar.gz ffutils-5da5e89beec8ad11f3dc7c9598ab69d97ad82468.tar.bz2 ffutils-5da5e89beec8ad11f3dc7c9598ab69d97ad82468.tar.xz |
First commit
Signed-off-by: Mattias Andrée <m@maandree.se>
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | DEPENDENCIES | 9 | ||||
-rw-r--r-- | LICENSE | 15 | ||||
-rw-r--r-- | TODO | 3 | ||||
-rwxr-xr-x | ffextract-audio | 108 | ||||
-rwxr-xr-x | ffget-audio-extension | 26 |
6 files changed, 163 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1189c62 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*\#* +*~ diff --git a/DEPENDENCIES b/DEPENDENCIES new file mode 100644 index 0000000..821a288 --- /dev/null +++ b/DEPENDENCIES @@ -0,0 +1,9 @@ +basename +ffmpeg +mkdir +printf +rmdir +sed +sh +test +unlink @@ -0,0 +1,15 @@ +ISC License + +© 2024 Mattias Andrée <m@maandree.se> + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. @@ -0,0 +1,3 @@ +Add Makefile +Add man pages +Add README diff --git a/ffextract-audio b/ffextract-audio new file mode 100755 index 0000000..b95dd8f --- /dev/null +++ b/ffextract-audio @@ -0,0 +1,108 @@ +#!/bin/sh +# See LICENSE file for copyright and license details. + +set -e + +usage () { + printf 'usage %s: [-Dry] in-file [out-file]\n' "$0" >&2 + exit 1 +} + +recursive=no +delete_in_file=no +ffmpeg_flag_y= +status=0 + +while test "${1::1}" = '-'; do + if test "${1}" = '--'; then + shift + break + elif test "${1}" = '-'; then + break + fi + + arg="${1:1}" + while test -n "${arg}"; do + flag="${arg::1}" + arg="${arg:1}" + if test "${flag}" = r; then + recursive=yes + elif test "${flag}" = D; then + delete_in_file=yes + elif test "${flag}" = y; then + ffmpeg_flag_y=-y + else + usage + fi + do +done + +if test ! $# = 1 && test ! $# = 2; then + usage +fi + +in_file="$1" +if test -z "${in_file}"; then + usage +fi + +out_file="" +if test $# = 2; then + out_file="$2" + if test -z "${out_file}"; then + usage + fi +fi + +getext () { + ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 -- "$1" +} + +removeext () { + printf '%s\n' "$1" | sed 's/\.[^.]*$//' +} + +extract () { + printf '\033[1m%s\033[m\n' "Extracting audio track from ${1}" >&2 + printf '\033[1m%s\033[m\n' "and storing as ${2}" >&2 + if ffmpeg -i "${1}" -vn -acodec copy ${ffmpeg_flag_y} -- "${2}"; then + if test ${delete_in_file} = yes; then + unlink -- "${1}" + fi + fi +} + +if test ${recursive} = no || test ! -d "${in_file}"; then + if test -z "${out_file}"; then + out_file="$(removeext "${in_file}").$(getext "${in_file}")" + fi + extract "${in_file}" "${out_file}" + exit $? +fi + +recursive () { + for in_file in "${1}/"*; do + out_file="$2/$(basename -- "${in_file}")" + if test -d "$f"; then + mkdir -p -- "${out_file}" + recursive "${in_file}" "${out_file}" + else + out_file="$(removeext "${out_file}").$(getext "${in_file}")" + if ! extract "${in_file}" "${out_file}"; then + status=1 + fi + fi + done + if test ${delete_in_file} = yes; then + rmdir -- "${1}" 2>/dev/null || : + fi +} + +if test -z "${out_file}"; then + out_file="${in_file}" +else + mkdir -p -- "${out_file}" +fi +recursive "${in_file}" "${out_file}" + +exit $status diff --git a/ffget-audio-extension b/ffget-audio-extension new file mode 100755 index 0000000..7f0156f --- /dev/null +++ b/ffget-audio-extension @@ -0,0 +1,26 @@ +#!/bin/sh +# See LICENSE file for copyright and license details. + +set -e + +usage () { + printf 'usage %s: in-file\n' "$0" >&2 + exit 1 +} + +while test "${1::1}" = '-'; do + if test "${1}" = '--'; then + shift + break + elif test "${1}" = '-'; then + break + else + usage + fi +done + +if test ! $# = 1; then + usage +fi + +exec ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 -- "$1" |