16
fevereiro 2019

Convertendo Arquivos de Vídeo para iPhone com HandBrake

Escrito por Mario Medeiros não comentários

Quando se tem mais de um tipo de smartphone (no caso um Android e um iPhone), muitas coisas podem não ser tão compatíveis entre si.
Não vou entrar no mérito de “quem é o melhor”, mas falarei de forma breve ao menos, sobre compatibilidade de arquivos, que no caso são os de video.
A situação/cenário é o seguinte:

Gravo videos com o Android, copio para o desktop Linux, ajusto/edito com o OpenShot e exporto como mp4 para web, tentando assim, manter a melhor qualidade possível. Encontrei há algum tempo um script do ffmpeg que reduz o tamanho dos arquivos numa proporção até que razoável.

Até aí, nada de mais.

Quando tentei enviar para o iPhone (que tem suas frescuras e imbecilidades, mas não vem ao caso), os vídeos estavam sem áudio. Aí o demente aqui, pensou: aaaahhhhh, é só mudar o codec do ffmpeg e pronto, moleza. Ledo engano. Cada vez ficava pior o formato, a ponto de muitas vezes, ficar até maior que original e ainda sem áudio.

Numa busca um pouco mais refinada, com mais raciocínio e paciência, encontrei no site Command Line Fu, um comando utilizando o HandBrake, que é um Video Transcoder Open Source. Eu utilizo o mesmo para extrair arquivos de DVDs. Mesmo conhecendo a ferramente há um bom tempo, nunca me passou pela cabeça (normal isso, muito normal) que o mesmo tivesse recursos por linha de comando.

Claro, deve-se instalar o handbrake-cli que é separado do pacote Handbrake. Mas isso é moleza.

Em Debian e derivados, utilizar o apt-get install handbrake-cli

Depois é só utilizar o comando abaixo na pasta onde estão os arquivos. Ah, o comando original do site, está pronto para conversão em lote, ou seja, pode ter N arquivos na pasta que serão convertidos todos.

Fiz uns ajustes no código. Foram somente para criar uma pasta separada e o formato dos arquivos de origem de AVI para MP4. Foi o que eu precisava.

As vantagens desse script foram que além de ficar no formato correto para leitura no iPhone, ficaram menores ainda do que com o script anterior e com uma perda imperceptível (ao menos para mim) de qualidade visual.

Espero que este pequeno post, possa ser útil, mesmo para quem não tenha esse problema de compatibilidade que tive, mas que precise manter uma boa qualidade dos vídeos em tamanhos relativamente pequenos.

Seguem o shell script que fiz com o comando e os links sobre a documentação do HandBrake.

Obs: o shell que fiz, verifica se existe o diretório de destino criado, se houver ele começa a conversão. Caso não exista, ele cria o diretório e inicia a conversão. Foi mais para resolver meu problema de preguiça. Altere conforme necessário.

Links e referências:

Link do comando

Documentação do HandBrakeCLI

 

Shell Script com o comando:

#!/bin/bash

#Data: 2018-12-09

#Versao: 1.0.0

#Autor: Mario Medeiros

if [ -e "convertidos-iphone" ]

then

find . -name \*.mp4 -exec HandBrakeCLI -i "{}" -o convertidos-iphone/"{}".iphone.mp4 --preset="iPhone & iPod Touch" \;

else

echo " diretorio não existe - criando diretorio"

mkdir convertidos-iphone && find . -name \*.mp4 -exec HandBrakeCLI -i "{}" -o convertidos-iphone/"{}".iphone.mp4 --preset="iPhone & iPod Touch" \;

fi

exit

 

Data original do texto: 2018-12-17


04
outubro 2018

Listagem de Nomes Aleatórios em Shell e Zenity

Escrito por Mario Medeiros não comentários

Este artigo (nem sei se poderíamos chamar de artigo, mas vai assim mesmo), é bem curto e com um código bem simples. Gerar um lista de itens aleatória com base em uma lista pré-definida.

Com base em um arquivo txt com nomes (organizado com um nome por linha, claro), o script lê o arquivo texto e gera uma outra lista na tela com as linhas ordenadas de forma aleatória.

Super básico e simples. Serve para uso em sorteios de brindes e outros. Pode-se limitar o resultado pela tela de número de itens a ser mostrado. Se caso não for passado nenhum parâmetro, o script retorna por padrão, 10 itens.

O código está no github

Segue abaixo o código, em shell e Zenity.

#!/bin/bash
#
#Script simples em bash com zenity, para sorteio de nomes de uma lista em txt
#Seleciona arquivo organizado com nomes por linhas, embaralha o conteúdo de
#forma aleatória (randomica) e mostra na tela a quantidade de itens selecionados
#
#Autor: Mario Medeiros
#Nome Aplicação: Sorteio
#Nome Arquivo: sorteio.sh
#Data: 2018-10-04
#Versão: 1.0.0
#
#Dependências: Zenity
#
#########################################################################

arquivo=$(zenity --file-selection --title="Selecione Um Arquivo de Lista")
numero=$(zenity --entry --text="Digite O Número De Itens" --title="Número De Itens Da Lista")
cat $arquivo | sort -R | head -$numero | zenity --text-info --auto-scroll --width=500 --height=500

Categorizado em : Linux Tags : sem tags


24
julho 2018

Baixando Letras De Músicas Do Site DarkLyrics

Escrito por Mario Medeiros não comentários

Existem espalhados pelas “infernets e infer-webs” uma variedade enorme de sites com as letras de músicas, das mais variadas bandas e estilos. Até ai, nada de mais.

Quando se pretende somente uma letra ou duas, é só procurar um pouco, acessar o site e ler ou até mesmo copiar a letra, se quiser.

A idéia aqui é salvar ou baixar/copiar as letras de forma um tanto quanto que automatizada, utilizando como motivador a Soberana Preguiça, com ferramentas Linux, em Shell Script. Lembrando que é uma solução bem simples e básica para um problema ou necessidade pessoal bem específica e que talvez possa ser ajustada para outras necessidades e situações.

Vamos aos detalhes.

1 – Estilo de música: metal

2 – Site das letras: www.darklyrics.com

3 – O que baixar: lista de álbuns, letras de músicas individuais e/ou das músicas dos álbuns.

Como disse, é uma situação bem específica e pessoal.

O site possui um padrão de organização que facilitou bem a montagem do script.

A estrutura do site segue a seguinte lógica:

Link da banda: http://www.darklyrics.com/i/inflames.html

Site, letra inicial do nome da banda, nome da banda (página com os links para os álbuns).

Link para os álbuns, por exemplo banda In Flames, álbum Battles:

http://www.darklyrics.com/lyrics/inflames/battles.html

Observe que há diferenças de caminhos quando se trata da banda e dos álbuns da mesma. Seguindo o padrão, foi relativamente fácil lidar as variáveis “banda”, “album” e “letra”.

Para chegar até a banda, segue a inicial depois o nome da banda. Para os álbuns e letras, coloca-se no caminho, o “lyrics” a “banda” e depois o “album”.

O script tem as seguintes funções, conforme o menu abaixo:

 

1 - Listar albums da banda

2 - Escolher album da banda

3 - Gravar em arquivo lista de albuns

4 - Gravar em arquivo letras do album

z - Sair - Sai do Sistema

 

As opções 3 e 4, que são as mais interessantes, permitem baixar e gravar em arquivo a lista de álbuns e as letras de um álbum específico, que for informado para o script, por exemplo:

 

-----------------Escolha uma opção---------------------

 

1 - Listar albums da banda

2 - Escolher album da banda

3 - Gravar em arquivo lista de albuns

4 - Gravar em arquivo letras do album

z - Sair - Sai do Sistema

 

-----------------Escolha uma opção---------------------

 

Escolha uma das opcoes acima [1-2-3-4-z]: 4

Nome da banda sem espacos

 

inflames

Nome do album sem espacos

 

battles

O arquivo será salvo em dois formatos, txt e html, com o nome do álbum, da seguinte forma:

letras-battles.txt

letras-battles.html

O formato em txt já é suficiente para poder ser utilizável em qualquer editor de texto que queira. Fiz uma saída em html, para se ter mais uma opção. Pode-se utilizar em qualquer layout HTML/CSS, desde que faça os ajustes necessários.

Eu utilizei o layout do site HTML5UP (http://html5up.net/), tema Halcyonic, que me atendeu conforme eu necessitava.

No demais, o script é um tanto quanto que intuitivo. Vou deixar o link com o script e os arquivos de modelo em html e css do layout acima mencionado. Crie um diretório no seu home com um nome qualquer que facilite o uso, como por exemplo, letras e mantenha todos no mesmo diretório de trabalho, com a seguinte estrutura:

 

Arquivos:

dark-lyrics-dolores.sh

model.html

Diretórios:

├── assets

│   ├── css

│   │   └── images

│   │   └── ie

│   ├── js

│   │   └── ie

│   └── sass

│   └── libs

├── css

└── fonts

 

Quando a opção 3 e/ou 4 forem utilizadas, serão gravados os arquivos nos dois formatos, txt e html. Escolha o que for mais interessante para sua necessidade.

Obs: este script foi feito em 2017-04-13 e está ainda na versão 0.1. Não postei antes devido a outros contratempos que tiveram maior prioridade. Não fiz nenhuma revisão desde então. Caso haja algum bug (e normalmente sempre tem) ou algo que não funcione adequadamente, pode-se optar em no mínimo, duas escolhas: me contatar e informar sobre o problema ou resolver por conta própria. A segunda opção é interessante hein, uma vez que pode lhe trazer um aprendizado novo. Mas, caso haja algum contratempo, mande um e-mail que tentarei resolver no menor tempo possível, ainda nesta eternidade.

Clique aqui para baixar o script e os arquivos.

Categorizado em : Linux Tags : sem tags


25
avril 2018

Convertendo bitrate de arquivos MP3 em lote mantendo nomes e outros atributos

Escrito por Mario Medeiros não comentários

E eis que um belo dia seu aparelho celular ou smartphone (tanto faz), lhe alerta que você não tem mais espaço para colocar nem mesmo uma musiquinha do tamanho da vinheta de programa televisivo de domingo.

Seu poderoso AiFoni já ocupou todo seu 1 bit (é isso mesmo, bit, não é Yota Bytes não) de armazenamento. Tá bom, tá bom, exagerei um pouco.

Mas o cenário é o seguinte: tudo que é mp3 que tem no seu aparelho móvel está em 320kbp/s, ocupando mais espaço que o necessário. Imagina ter uns 32 GB só de MP3, tudo em alta qualidade. Até aí tudo ótimo. Na verdade não é bem assim. Outros recursos começam a brigar para ocupar os réles mega bytes, até mesmo kilo bytes de espaço que estão misteriosamente, desaparecendo.

Vamos resolver isso, apagar tudo que é inutilidade do treko. Começando pelas fotos tiradas no carnaval, quando você estava fantasiado de melancia com farinha na praia, mas espera ai, essas fotos já foram retiradas/copiadas por medida de segurança, claro.

Xiiiiii, então ficaram os aplicativos. Fácil!! Remove os inúteis!!!

Tá bom, aqueles aplicativos de astrologia e auto-ajuda não podem sair. São “extremamente necessários e importantes” para você. Entendo. Então apaga tudo os seus mp3 de fanqui, de sertanojo breganejo, electro-brega e afins.

Não?? Não pode também??? Tá certo!! Gosto não se discute, se lamenta!!

Mas então que tal, liberar espaço no treko, sem apagar as fotos de qualidade duvidosa, os aplicativos “sérios” e manter seus mp3 de “alto nível”? Gostou da idéia? Então vamos fazer o seguinte: reduzir o tamanho dos MP3s sem perda perceptível de qualidade de áudio (qualidade de áudio, não das músicas em si. Esse é um outro problema, fora desse escopo).

Reduzir o bitrate de cada uma das músicas, vai reduzir até mais da metade do tamanho dos arquivos e liberar espaço necessário no aparelho.

Lembrando que deverá apagar os arquivos originais e colocar os outros convertidos.

Infelizmente, da forma que solucionei esse problema, não faz o próprio arquivo no aparelho reduzir de tamanho por mágica. Não é essa a idéia!!

Um script em shell lista os arquivos e os converte, copiando em outro diretório, mantendo os atributos do mesmo, mudando somente o bitrate e consequentemente seu tamanho.

O script está comentado cada linha, facilitando o entendimento, espero.

Adapte de acordo com suas necessidades. Melhorias e críticas são bem-vindas.

Segue abaixo o script:

###############################################

#!/bin/bash
#
#Descricao: script conversor de bitrate em mp3 - vários diretórios em lote.
#resultado final: diretorios e arquivos novos, conservando os nomes originais
#como subdiretorios do diretorio de nome 128 (bitrate convertido a 128 kbp/s)
#
#O script le um diretorio/subdiretorio com arquivos mp3 e gera uma lista
#em arquivo txt. Nesta lista há somente o nome do diretório, não seus arquivos.
#A partir desta lista, gera o diretório 128 com subdiretório como nome original.
#
#O script lê cada diretório listando somente os arquivos com extensão mp3 e
#converte os mesmos para bitrate 128 kbp/s, mantendo o nome original e os
#metadados ID3 ou ID2, se houver.
#
#Dependências: biblioteca lame, sed (este último não sendo obrigatório - leia
#a linha onde ele é utilizado e veja se é realmente necessário).
#
#Observação 0: manter aspas simples e duplas como estão dispostas no script
#Observação 1: o script segue a seguinte ordem:
#o ls com parâmetros, lê o diretório raiz onde se encontra o script, grava a
#saída em arquivo texto, usa o cat com while fazer um loop de leitura e envia
#para o echo gerar o script com os dados do arquivo txt gerado no início.
#ao final, gera o arquivo com os parâmetros e comandos do lame converter os
#arquivos mp3, criando os diretórios específicos e respectivos de cada diretório
#original.
#ao término de cada diretório, inicia-se a criação do próximo e a conversão
#dos respectivos arquivos mp3, até o final da lista.
#Observação 2: é recomendado remover os arquivos txt e sh gerados pelo script,
#uma vez que por qualquer motivo, rodar este script novamente no mesmo diretório
#estes mesmos arquivos poderão conflitar com o comandos do script gerador.
#
#Data: 2018-04-24
#Autor: Mario Medeiros
#Versao: 0.1
############################################################################
############################################################################

#lista somente os diretórios do diretório raiz do script
#gera o arquivo com os nomes do diretórios em lista
ls -F | grep "/" > lista-dir.txt

#cat lê o arquivo com a lista dos diretórios gerado pelo ls
#o echo grava no arquivo lista-dir.txt os parâmetros do script para iniciar a
#conversão dos arquivos
cat lista-dir.txt | while read line
do
echo 'mkdir -p "128/'$line'" && cd "'$line'" ; for f in *.mp3 ; do lame --mp3input -b 128 "$f" "../128/'$line'"/"$f" ; done
cd ..' >> 666-converter.txt
done

#script gerado, em formato txt, é copiado com extensão sh
cp 666-converter.txt 666-converter.sh &&

#o sed adiciona a instrucao no arquivo para ser um shellscript
#é mais um detalhe do que uma obrigatoriedade.
#tentando deixar o mais legal possível
sed -e '1i\' -e '#!/bin/bash' -i 666-converter.sh &&

#deixa o arquivo executável
chmod +x 666-converter.sh &&

#executa o script para iniciar a conversão dos mp3s
./666-converter.sh

Categorizado em : Linux Tags : sem tags


06
setembro 2017

ZQR - Código QR com Zenity

Escrito por Mario Medeiros não comentários

Em 17 de Setembro de 2015 escrevi um pouco sobre os tal de QrCode.
Para ler o artigo, clique aqui.
Na época eu fiz um script para ser utilizado em modo texto para criar os códigos.
Depois de alguns outros estudos e curiosidades sobre a geração dos códigos, acabei por fazer algumas alterações.
Adicionei algumas opções a mais e utilizei o zenity para deixar mais simples a geração dos códigos.

O script novo gera o qrcode com base em 4 tipos de entradas.
1 - um texto simples e curto digitado direto no campo do formulário;
2 - gera o código baseado num arquivo de texto com os dados;
3 - gera o código baseado num arquivo de texto com os dados e adiciona uma imagem de logotipo no centro da imagem do código qr;
4 - gera um qrcode para acesso à rede Wi-Fi.

Obs0: as dependências para a utilização do script são:

#####################################
#qrencode: gerador de QRCode #
#zenity: gerador de janelas #
#gthumb: visualizador de imagens#
#imagemagick: manipulador de imagens#
#####################################

Obs1: utilizei o gthumb para visualizar as imagens porque era o que estava "à mão" para a tarefa. Pode-se utilizar qualquer visualizador para isso. Deve-se somente mudar no código.

Obs2: para a geração do código com logotipo centralizado, é necessário o uso do Imagemagick, conforme consta na lista de dependências do script.

Criei um pacote com os arquivos para teste e uso.
Nele constam:
arquivo zqr.sh (o script em si);
arquivo de imagem tux.png (para uso no logotipo);
arquivo de texto dados.txt com os dados (para uso na geração com base em arquivo texto).

Não tem muito o que dizer sobre o código.
O que fiz foi coletar partes prontas de outros códigos, tanto alguns meus como os de sites e forums diversos e ler a documentação do site do zenity.

Tentei comentar o melhor possível, mas é basicamente auto-explicativo o código do script.

Muita coisa não deu certo no começo, mas isso foi mais porque esse "desenvolvedor" que vos escreve é muito relapso e tem um raciocínio ímpar, assim como a quantidade de neurônios, que no caso é um só mesmo (por isso o ímpar).

O resultado final ficou até que "usável". Talvez eu faça algo em PHP futuramente, apesar de já existirem várias ferramentas prontas para isso, então seria mais para efeito de estudo do que para uso prático.

Clique aqui para baixar o pacote ZQR.

Categorizado em : Linux Tags : sem tags


anterior página 2 de 9 seguinte »