slitaz-tools annotate tinyutils/decode @ rev 835

Tiny edits
author Paul Issott <paul@slitaz.org>
date Mon Feb 24 20:08:51 2014 +0000 (2014-02-24)
parents c79e656b37a5
children 5d80f6fdbdb7
rev   line source
pankso@746 1 #!/bin/sh
pankso@746 2 #
paul@763 3 # Decode is a cmdline tool to decode all kinds of files such as audio or video.
paul@763 4 # Lets you decode a single file, many files on cmdline or a full directory.
pankso@746 5 #
pascal@821 6 # Copyright (C) 2012-2014 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
al@813 11 export TEXTDOMAIN='slitaz-tools' #i18n
pankso@746 12
pankso@746 13 # NOTES:
paul@835 14 # Do we need a --out=/output/path option ?
pankso@746 15 # Use convert for [.png|.jpg] --> .raw ?
pankso@746 16 # Use separators and give decoded file size ?
pankso@746 17 # Use mencoder for flash video files (and other format) ?
pankso@746 18
pankso@746 19
pankso@746 20 #
pankso@746 21 # Functions
pankso@746 22 #
pankso@746 23
pankso@746 24 # Small help and usage.
pankso@746 25 usage() {
pankso@746 26 cat << EOT
pankso@746 27
al@813 28 $(_n 'Decode audio and video files')
pankso@746 29
al@813 30 $(boldify "$(_ 'Usage:')")
al@813 31 $(basename $0) [$(_n 'option')] [$(_n 'file')|$(_n 'URL')] ...
pankso@746 32
al@813 33 $(boldify "$(_ 'Examples:')")
pankso@746 34 $(basename $0) audio.mp3 audio.ogg
al@813 35 $(basename $0) $(_n '/path/to/files/*')
al@813 36 $(basename $0) http://www.myurl/$(_n 'file').avi
pankso@746 37
pankso@746 38 EOT
pankso@746 39 }
pankso@746 40
paul@763 41 # Check if a tool is installed. Don't force users and auto install package
paul@763 42 # Decode is a cmdline line tool, let's have auto install option in GUI.
pankso@746 43 check_tool() {
al@813 44 dec=$1
pankso@746 45 name="$(basename "$file")"
pankso@746 46 if [ ! -x /usr/bin/$1 ]; then
al@813 47 _ 'Missing decoder: $dec'
al@813 48 _ 'Skipping file: $name'
pankso@746 49 continue
pankso@746 50 else
al@813 51 _ 'Decoding: $name'
al@813 52 newline
pankso@746 53 fi
pankso@746 54 }
pankso@746 55
pankso@746 56 # Decode a file.
pankso@746 57 decoder() {
al@813 58 newline; separator; newline
al@813 59 if [ ! -f "$file" ]; then
al@813 60 _ 'No file: $file'
al@813 61 continue
al@813 62 fi
al@813 63 ext=$(echo ${file##*.} | tr '[A-Z]' '[a-z]')
al@813 64 case $ext in
al@813 65 mp3)
pankso@746 66 check_tool "mpg123"
pankso@746 67 mpg123 --rate 44100 --stereo --buffer 3072 --resync \
al@813 68 -w "${file%.*}.wav" "$file" ;;
al@813 69 ogg)
pankso@746 70 check_tool "oggdec"
pankso@746 71 oggdec "$file" ;;
al@813 72 avi|wmv|mov|flv)
pankso@746 73 check_tool "ffmpeg"
pankso@746 74 # *.flv --> mencoder file.flv -ovc lavc -oac mp3lame -o file.avi
al@813 75 ffmpeg -y -i "$file" "${file%.*}.mpg"
al@813 76 du -sh "${file%.*}.mpg" ;;
al@813 77 wav|mpg|--*)
pankso@746 78 # Skip decoded files and --options.
al@813 79 name="$(basename "$file")"
al@813 80 _ 'Skipping file: $name'
pankso@746 81 continue ;;
al@813 82 *) _ 'Unsupported file: $file' ;;
pankso@746 83 esac
pankso@746 84 }
pankso@746 85
pankso@746 86 #
pankso@746 87 # Commands
pankso@746 88 #
pankso@746 89
pankso@746 90 case "$1" in
al@813 91 -h|--help|"") usage ;;
pankso@746 92 *)
al@813 93 for file in "$@"; do
al@813 94 debug "$file"
pankso@746 95 case "$file" in
pankso@746 96 http://*)
pankso@746 97 busybox wget "$file"
pankso@746 98 file="$(basename "$file")"
pankso@746 99 decoder && rm "$file" ;;
pankso@754 100 *.*)
pankso@746 101 decoder ;;
pankso@746 102 esac
al@813 103 done
al@813 104 newline ;;
pankso@746 105 esac
pankso@746 106
pankso@746 107 exit 0