[bash] Da flv a mp3 (tutti i file di una directory)

Andare in basso

[bash] Da flv a mp3 (tutti i file di una directory)

Messaggio Da floatman il Sab Lug 10, 2010 10:27 am

script che estrae file audio .mp3 da file video .flv
Il programma usa ffmpeg per la conversione; il vantaggio rispetto all'uso regolare di quel programma è che la conversione va applicata direttamente a tutti i file contenuti in una directory fornita come input.

$ nome_script "directory_dei_file_da_estrarre"

dentro 'directory_dei_file_da_estrarre' verrà creata una sotto-directory 'converted_mp3' contenente gli mp3 estratti.

Codice:
#!/bin/bash

# +++++++++++++ it requires ffmpeg +++++++++++++
# extract audio (mp3) from flv videos
# usage: `basename $0` directory_with_flv_videos
# ie:    this_script.sh /home/foo/myflv
#

function rename_file {
  LINES=$(ls "$TARGET" | grep ".flv" | wc | awk {'print $1'})
  for ((i=1; i<=LINES; i++))
  do
    TITLE=$(ls "$TARGET" | grep ".flv" | head -"$i" | tail -1)
    cp "$TARGET"/"$TITLE" "$CONVDIR/$(echo "$TITLE" | sed -e 's/ /_/g' -e 's/_-_/_/g' -e 's/(//g' -e 's/)//g')"
  done
}

function convert_file {
  for file in $(ls "$CONVDIR"); do
    echo -ne "converting \033[00;36m'$file'\033[00m: "
    ffmpeg -i "$CONVDIR"/"$file" -ab 128k "$CONVDIR"/$(echo "$file" | sed -e 's/.flv//').mp3 &> /dev/null
    echo -e "\033[01;35mdone\033[00m"
    rm "$CONVDIR"/"$file"
  done
}

# main program

# test ffmpeg
which ffmpeg &> /dev/null
if [ "$?" -ne "0" ]; then
  echo -e "\033[01;31mit seems ffmpeg is not installed\033[00m"
  exit 0
fi

if [ "$1" == "" ] || [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
  echo "$(basename $0) flv sound exctractor (using ffmpeg)"
  echo "usage: $(basename $0) directory_with_flv(s)"
  echo "You can use '$(basename $0) \$PWD' for current directory"
  exit 0
fi

TARGET="$1"

# target doesn't exist
if ! [ -d "$TARGET" ]; then
  echo -e "\033[01;31m'$TARGET' is not a directory\033[00m"
  exit 0
fi
# target not writable
if ! [ -w "$TARGET" ]; then
  echo -e "\033[01;31m'$TARGET' is not writable for $USER\033[00m"
  exit 0
fi

CONVDIR="$TARGET"/converted_mp3

# some errors?
if [ -d "$CONVDIR" ]; then
  rm -r "$CONVDIR"
fi

mkdir "$CONVDIR"
rename_file
convert_file

exit 0

_________________
HP Compaq nx6110; Debian Testing/Squeeze - Fluxbox

avatar
floatman

Messaggi : 844
Data d'iscrizione : 14.09.09

Visualizza il profilo dell'utente http://myville.altervista.org

Tornare in alto Andare in basso

Tornare in alto

- Argomenti simili

 
Permessi di questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum