Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

[Shell-Script] Extrair o áudio de arquivos de vídeo

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    [Shell-Script] Extrair o áudio de arquivos de vídeo

    Este script extrai o áudio de arquivos de vídeo nos formatos avi, flv, mp4, mpg, rm, rmvb e wmv. Talvez funcione com algum outro formato de arquivo de vídeo também, mas eu só testei nestes citados aqui.

    O script converte o áudio para wav ou mp3. Se for converter para mp3, você poderá escolher a taxa de bits desejada. Pode funcionar totalmente em modo gráfico, sem depender do terminal. Porém a função de ajuda somente será exibida no terminal.

    Foi desenvolvido para extrair o áudio de vídeos baixados do youtube.
    Pra quem quiser baixar esta aqui
    Download:
    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...[/QUOTE]

    #!/bin/bash
    # extrai-audio.sh

    #-------------------------------------------------------------------------------------
    # Versão 1.0 : Elias Bernabé Turchiello - 14/09/2011 : Extrai o áudio de arquivos de vídeo convertendo-os para wav ou mp3



    #-------------------------------------------------------------------------------------
    # Elias Bernabé Turchiello
    # Home: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...


    #-------------------------------------------------------------------------------------
    # Criando a variável de ajuda:
    ajuda="
    [`basename $0`]
    * USO : `basename $0` [OPÇÃO]
    * Extrai o áudio de arquivos mp4, avi, rmvb, rm, flv, mpg e wmv; convertendo-os para wav ou mp3.
    * Funciona em modo gráfico não sendo necessário executá-lo na linha de comando.
    * Basta dar permissão de execussão ao script e executá-lo.
    * Tenta resolver automaticamente alguma dependência de programas necessários para a execussão correta do script.
    * Coloque os arquivos de vídeo que deseja extrair o áudio dentro de um diretório qualquer, execute o script e selecione este diretório.
    * É capaz de trabalhar arquivos e diretórios contendo espaço no nome.
    * Processa todos os arquivos de vídeo que estiverem dentro do diretório selecionado.
    * Os arquivos de áudio extraidos ficam em um novo subdiretório com o nome de MP3 ou WAVE.
    * Exibe o andamento do processo de extração.

    [OPÇÕES]
    -h --help -mostra esta tela de ajuda e sai
    -v --versão -mostra a versão, data de criação, o autor, as mudanças da versão e sai
    -e --exemplo -mostra exemplos de como executar este script e sai
    "

    # Prestando ajuda:
    case "$1" in
    -h|--help)
    echo "$ajuda"
    echo
    exit 0 ;;

    -v|--versão)
    echo
    echo " [`basename $0`]"
    echo
    grep '^# Versão ' "$0" | tail -1 | cut -d : -f 1 | tr -d \#
    grep '^# Versão ' "$0" | tail -1 | cut -d : -f 2 | tr -d \#
    echo
    grep '^# Versão ' "$0" | tail -1 | cut -d : -f 3 | tr -d \#
    echo
    exit 0 ;;

    -e|--exemplo)
    echo
    echo "Voce pode executar este script das seguntes formas:"
    echo "./`basename $0`"
    echo "sh `basename $0`"
    echo "bash `basename $0`"
    echo "`basename $0` (neste caso o diretório onde o script está localizado deve estar listado na variável PATH)"
    echo
    exit 0 ;;

    *)
    if test -n "$1" ; then # Ou if [ -n "$1" ]; then
    echo "Opção inválida"
    echo "Utilize [-h, --help] [-v, --versão] ou [-e, --exemplo]"
    echo
    exit 1
    fi ;;
    esac


    #-------------------------------------------------------------------------------------
    # Resolvendo dependências:
    # Verificando a distribuição:
    # Procurando um terminal:
    terminais="
    xterm
    konsole
    yakuake
    kterm
    eterm
    terminal
    terminator
    "
    for x in $terminais ;do
    which $x >&2> /dev/null && encontrado="nao"; continue || terminal=$x encontrado="sim"; break
    done
    [ "$encontrado" = "nao" ] || {
    echo "
    Não foi possivel encontrar um terminal conhecido para resolver as dependências
    Por favor instale manualmente um dos seguintes terminais e tente novamente:
    xterm
    konsole
    yakuake
    kterm
    eterm
    terminal
    terminator"
    # Caso o Xdialog já esteja instalado:
    Xdialog --title "`basename $0` $$" --backtitle "ERRO" --fill --msgbox "Não foi possivel encontrar um terminal para resolver as dependências. Por favor instale manualmente um dos seguintes terminais e tente novamente: xterm konsole yakuake kterm eterm terminal terminator" 19 60
    exit 1
    }
    # Verificando se existe o comando sudo:
    if which sudo >&2> /dev/null; then
    printf "%-70s[ OK ]\n" "sudo"
    else
    echo "
    Você não tem o aplicativo sudo instalado em seu sistema
    Por favor instale-o manualmente para poder presseguir com a execussão do script"
    # Caso o Xdialog já esteja instalado:
    Xdialog --title "`basename $0` $$" --backtitle "ERRO" --fill --msgbox "Você não tem o aplicativo sudo instalado em seu sistema\n\nPor favor instale-o manualmente para poder presseguir com a execussão do script" 19 60
    exit 1
    fi
    # Definindo a lista de dependências:
    dependencia="
    xterm
    Xdialog
    ffmpeg
    lame
    "
    # Verificando a distribuição:
    if [ -f /etc/redhat-release ] ; then
    # O sistema é Red Hat:
    # Verificando se possui o yum instalado:
    if which yum >&2> /dev/null ; then
    for x in $dependencia ; do
    if which $x >&2> /dev/null; then
    printf "%-70s[ OK ]\n" $x
    else
    $terminal -e "echo Você não tem o $x instalado em sua máquina & echo Forneça a senha de super-usuário para instalá-lo agora & sudo yum install $x & read sai"
    fi
    done
    else
    for x in $dependencia ; do
    if which $x >&2> /dev/null; then
    printf "%-70s[ OK ]\n" $x
    else
    $terminal -e "echo Você não tem o $x instalado em sua máquina & echo Forneça a senha de super-usuário para instalá-lo agora & sudo urpmi $x & read sai"
    fi
    done
    fi
    else
    # O sistema é Debian:
    for x in $dependencia ; do
    if which $x >&2> /dev/null; then
    printf "%-70s[ OK ]\n" $x
    else
    $terminal -e "echo Você não tem o $x instalado em sua máquina & echo Forneça a senha de super-usuário para instalá-lo agora & sudo apt-get install $x & read sai"
    fi
    done
    fi




    #-------------------------------------------------------------------------------------
    # Preparando a variável ifs para ler nomes com espaços:
    IFS='
    '




    #-------------------------------------------------------------------------------------
    # Mensagem inicial:
    Xdialog --title "`basename $0` $$" --backtitle "BEM VINDO" --fill --yesno "Este script irá extrair o áudio contido em arquivos de vídeo\n\nColoque todos os arquivos de vídeo que deseja extrair o áudio dentro de um diretório qualquer e na próxima janela selecione este diretório\n\nPara um melhor funcionamento do script evite utilizar arquivos que contenham o caracter ponto (.) como separador entre as palavras\n\nDeseja prosseguir agora?" 0 0
    if [ $? != 0 ]; then
    exit 0
    fi




    #-------------------------------------------------------------------------------------
    # Capturando o diretório onde estão os arquivos a serem extraídos:
    Xdialog --title "`basename $0` $$" --backtitle "Entre no diretório onde estão os arquivos de vídeo" --dselect "$HOME" 0 0 2> /tmp/local-$$
    if [ $? != 0 ]; then
    exit 0
    fi
    origem="`cat /tmp/local-$$`"
    rm -f /tmp/local-$$




    #-------------------------------------------------------------------------------------
    # Escolhendo o tipo de arquivo de áudio a ser convertido:
    Xdialog --title "`basename $0` $$" --backtitle "Arquivo de áudio" --fill --menu "Escolha o tupo de arquivo de áudio que deseja criar após a extração" 15 40 0 \
    "MP3" "" \
    "WAVE" "" 2> /tmp/extensao-$$
    if [ $? != 0 ]; then
    exit 0
    fi
    audio=`cat /tmp/extensao-$$`
    rm -f /tmp/extensao-$$

    # Criando um diretório para armazenar o áudio extraido:
    mkdir "$origem$audio"

    # Caso tenha escolhido a opção MP3, então escolher a taxa de bits:
    if [ "$audio" = "MP3" ]; then
    Xdialog --title "`basename $0` $$" --backtitle "Taxa de bits MP3" --fill --menu "Escolha a taxa de bits mp3" 15 40 0 \
    "32" "Qualidade de AM" \
    "96" "Qualidade de FM" \
    "128" "Qualidade boa" \
    "160" "Qualidade melhor" \
    "192" "Qualidade excelente" \
    "224" "Mais que excelente, mas torna o arquivo muito grande" \
    "320" "Praticamente sem compactação" 2> /tmp/taxa-$$
    if [ $? != 0 ]; then
    exit 0
    fi
    taxa=`cat /tmp/taxa-$$`
    rm -f /tmp/taxa-$$
    fi

    # Preparando a exibição dos resultados:
    echo "Iniciando o trabalho de extração e conversão ..." >> /tmp/log-$$
    echo >> /tmp/log-$$
    xterm -e "tail -f -n1000000000000 /tmp/log-$$" &




    #-------------------------------------------------------------------------------------
    # Extraindo o áudio:
    for x in `ls -1 "$origem"`; do
    # Verificando se o nome não é um diretório
    if [ -d "$origem$x" ]; then
    continue
    fi

    # Verificando se é um arquivo válido, .avi .mp4 .rmvb .rm .flv .wmv .mpg:
    extensao=`echo $x | awk -F. '{ print $NF }'`
    case $extensao in
    avi|AVI) echo ;;
    mp4|MP4) echo ;;
    rmvb|RMVB) echo ;;
    rm|RM) echo ;;
    mpg|MPG) echo ;;
    flv|FLV) echo ;;
    wmv|WMV) echo ;;
    *) continue ;;
    esac

    echo "" >> /tmp/log-$$
    echo "Processando => $x" >> /tmp/log-$$

    # Extraindo o nome:
    nome=`echo $x | cut -d'.' -f1`

    # Extraindo o áudio para wave:
    ffmpeg -i "$origem$x" "$origem$nome.wav"
    if [ $? = 0 ]; then
    echo "Extraindo wave [ OK ]" >> /tmp/log-$$
    else
    echo "Extraindo wave [ERRO]" >> /tmp/log-$$
    fi

    # Caso tenha escolhido converter para mp3:
    if [ "$audio" = "MP3" ]; then
    # Convertendo para mp3:
    lame "$origem$nome.wav" -b "$taxa"kb "$origem$nome.mp3"
    if [ $? = 0 ]; then
    echo "Convertendo mp3 [ OK ]" >> /tmp/log-$$
    else
    echo "Convertendo mp3 [ERRO]" >> /tmp/log-$$
    fi
    rm -f "$origem$nome.wav"
    fi
    done

    # Movendo os arquivos de áudio para a nova pasta:
    mv "$origem"*.wav "$origem$audio"
    mv "$origem"*.mp3 "$origem$audio"

    echo "" >> /tmp/log-$$
    echo "" >> /tmp/log-$$
    echo "Todos os arquivos foram processados" >> /tmp/log-$$
    echo -e "\a"
    sleep 1
    echo -e "\a"
    sleep 1
    echo -e "\a"
    creditos: Elias Bernabé Turchiello
    sigpic
    Similar Threads

  • Font Size
    #2
    Que "massa" broder, esses dias eu tive que ir na net pra procurar algo assim, pra tiver a música de um video.
    esse eu guardei aqui, sei que vou precisar outra hora denovo... =]

    valeu.
    Não Acha Estranha Essa Frase:
    Eu Sou Hacker e Uso Windows XP!

    Use Débian, Aprenda Slackware e Brinque Muito Com Back|Track


    Fã ->Nickguitar.dll


    Quer ajudar nossso fórum e não sabe como?
    Então click na imagem e ajude-nos com os links off

    Comment


    • Font Size
      #3
      Muito bom brother

      eu uso o comando

      ffmeg -i video musica.mp3

      Comment


      • Font Size
        #4
        coloquei o comando errado --'

        é ffmpeg ****

        Comment


        • Font Size
          #5
          Postado Originalmente por =[ DiLLuViUM ]= Ver Post
          Muito bom brother

          eu uso o comando
          aheihaiehi simplicidade.. haeihaie =]
          Não Acha Estranha Essa Frase:
          Eu Sou Hacker e Uso Windows XP!

          Use Débian, Aprenda Slackware e Brinque Muito Com Back|Track


          Fã ->Nickguitar.dll


          Quer ajudar nossso fórum e não sabe como?
          Então click na imagem e ajude-nos com os links off

          Comment


          • Font Size
            #6
            Nossa massa mesmo em fera,tava precisando justamente desse lindo programa.

            Valeu mesmo brother nos que tá.
            sigpic

            Comment

            X
            Working...
            X