slitaz-tools annotate tinyutils/decode @ rev 746

Add: decode (new cmdline tool to decode audio/video files)
author Christophe Lincoln <pankso@slitaz.org>
date Mon Apr 30 10:35:44 2012 +0200 (2012-04-30)
parents
children 6e62d41a70d2
rev   line source
pankso@746 1 #!/bin/sh
pankso@746 2 #
pankso@746 3 # Decode is a cmdline tool to decode all kind of files such as audio or video.
pankso@746 4 # Let decode a single file, many file on cmdline or a full directory.
pankso@746 5 #
pankso@746 6 # Copyright (C) 2012 SliTaz GNU/Linux - BSD License
pankso@746 7 #
pankso@746 8 # Author: Christophe Lincoln <pankso@slitaz.org>
pankso@746 9 #
pankso@746 10 . /lib/libtaz.sh
pankso@746 11
pankso@746 12 # NOTES:
pankso@746 13 # Do we need a --out=/output/path options ?
pankso@746 14 # Use convert for [.png|.jpg] --> .raw ?
pankso@746 15 # Use separators and give decoded file size ?
pankso@746 16 # Use mencoder for flash video files (and other format) ?
pankso@746 17
pankso@746 18 # Internationalization
pankso@746 19 . /usr/bin/gettext.sh
pankso@746 20 TEXTDOMAIN='slitaz-tools'
pankso@746 21 export TEXTDOMAIN
pankso@746 22
pankso@746 23 #
pankso@746 24 # Functions
pankso@746 25 #
pankso@746 26
pankso@746 27 # Small help and usage.
pankso@746 28 usage() {
pankso@746 29 cat << EOT
pankso@746 30
pankso@746 31 $(gettext "Usage:") $(basename $0) [option] [file|url] [file2 url2 ... fileN urlN]
pankso@746 32
pankso@746 33 $(gettext "Decode audio and video files")
pankso@746 34
pankso@746 35 $(gettext "Examples:")
pankso@746 36 $(basename $0) audio.mp3 audio.ogg
pankso@746 37 $(basename $0) /path/files/*
pankso@746 38 $(basename $0) http://www.myurl/file.avi
pankso@746 39
pankso@746 40 EOT
pankso@746 41 }
pankso@746 42
pankso@746 43 # Check if a tool is installed. Dont force users and auto install package
pankso@746 44 # Decode is a cmdline line tool, let have auto install option in GUI.
pankso@746 45 check_tool() {
pankso@746 46 name="$(basename "$file")"
pankso@746 47 if [ ! -x /usr/bin/$1 ]; then
pankso@746 48 echo ""
pankso@746 49 gettext "Missing decoder :"; echo " $1"
pankso@746 50 gettext "Skipping file :"; echo " $name"
pankso@746 51 continue
pankso@746 52 else
pankso@746 53 echo ""
pankso@746 54 gettext "Decoding:"; echo " $name"
pankso@746 55 #separator
pankso@746 56 fi
pankso@746 57 }
pankso@746 58
pankso@746 59 # Decode a file.
pankso@746 60 decoder() {
pankso@746 61 case "$file" in
pankso@746 62 *.mp3|*.MP3)
pankso@746 63 check_tool "mpg123"
pankso@746 64 mpg123 --rate 44100 --stereo --buffer 3072 --resync \
pankso@746 65 -w "${file%.*3}.wav" "$file" ;;
pankso@746 66 *.ogg)
pankso@746 67 check_tool "oggdec"
pankso@746 68 oggdec "$file" ;;
pankso@746 69 *.avi|*.wmv|*.mov|*.flv)
pankso@746 70 check_tool "ffmpeg"
pankso@746 71 ext=${file##*.}
pankso@746 72 # *.flv --> mencoder file.flv -ovc lavc -oac mp3lame -o file.avi
pankso@746 73 ffmpeg -y -i "$file" "${file%.$ext}.mpg"
pankso@746 74 du -sh "${file%.$ext}.mpg" ;;
pankso@746 75 *.wav|*.mpg|--*)
pankso@746 76 # Skip decoded files and --options.
pankso@746 77 continue ;;
pankso@746 78 *) echo ""; gettext "Unsupported file:"; echo " $file" ;;
pankso@746 79 esac
pankso@746 80 }
pankso@746 81
pankso@746 82 #
pankso@746 83 # Commands
pankso@746 84 #
pankso@746 85
pankso@746 86 case "$1" in
pankso@746 87 "") usage ;;
pankso@746 88 *)
pankso@746 89 for file in "$@"
pankso@746 90 do
pankso@746 91 case "$file" in
pankso@746 92 http://*)
pankso@746 93 busybox wget "$file"
pankso@746 94 file="$(basename "$file")"
pankso@746 95 decoder && rm "$file" ;;
pankso@746 96 *)
pankso@746 97 [ ! -f "$file" ] && \
pankso@746 98 (gettext "No file:"; echo " $file") && continue
pankso@746 99 decoder ;;
pankso@746 100 esac
pankso@746 101 done && echo "" ;;
pankso@746 102 esac
pankso@746 103
pankso@746 104 exit 0