[bash] Da flv a mp3 (tutti i file di una directory)
Pagina 1 di 1
[bash] Da flv a mp3 (tutti i file di una directory)
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.
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
Argomenti simili
» [Bash] Update sistema Debian
» [bash] Contare le pagine totali dei pdf in una cartella
» Guida al bash-scripting
» [Bash] Visualizzare proprio IP
» [Bash] Quotazioni azionarie
» [bash] Contare le pagine totali dei pdf in una cartella
» Guida al bash-scripting
» [Bash] Visualizzare proprio IP
» [Bash] Quotazioni azionarie
Pagina 1 di 1
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.