Alteração em índice de vídeos (Download Progressivo)
March 19th, 2010
Problema com demora ao carregar vídeos em downloads progressivos(via HTTP) pode ser facilmente resolvido com multiplexador para arquivos MP4, chamado MP4Box. Esse problema se dá ao fato de não haver tempo de intercalação definido para os dados, ou seja, intervalo de tempo para leitura das informações sobre o vídeo, do index. Essas informações são: tempo, bitrate entre outros . Grosseiramente falando , é necessário trazer o index do vídeo para frente! rs.
O Script abaixo altera o tempo de intercalação para 300 ms fazendo com que o vídeo seja carregado de forma instantânea enquanto é baixado pelo player, ainda é possível enviar o vídeo através de FTP no mesmo script.
Dependências para o MP4Box: gpac build-essential zlib1g-dev
O script para conversão chamada outro script para envio ftp, segue os dois códigos:
-
Script de conversão: alteraind.sh
#! /bin/bash
#
# Tiago Gomes Pereira - 27/01/2010
#
if [ ! $1 ] || [ ! $2 ]
then
echo "Falta nome do vídeo ou caminho local , Estrume"
echo "alteraind.sh nomedovideo.mp4 /host.com.br/video/2009/11"
exit 19
fi
######################### VARIAVEIS
# Com tempo de índice de 300ms
# Nome Vídeo
VIDEO=$1
# Caminho
caminho=$2
##################################
# Extrai caminhos de diretório
localdir=`dirname $VIDEO`
# Extrai arquivo
localfile=`basename $VIDEO`
cd $localdir
################ Executa Conversão
/usr/local/bin/MP4Box -inter 300 $localfile &
#################
################# Se conversão Ok, manda , se não, manda também.
if [ $? = "0" ] ; then
echo `date "+%Y-%m-%d %H:%M:%S INFO: [ VIDEO ] SUCESSO NA CONVERSAO DE $VIDEO"` >> /var/log/enviovideo.log
/bin/envftp.sh $VIDEO $caminho &
else
echo `date "+%Y-%m-%d %H:%M:%S ERRO: [ VIDEO ] ERRO NA CONVERSAO DE $VIDEO"` >> /var/log/enviovideo.log
/bin/envftp.sh $VIDEO $caminho &
fi
-
script para envio FTP: envftp.sh
#! /bin/bash
#
# Tiago Gomes Pereira - 27/01/2010
#
if [ ! $1 ] || [ ! $2 ]
then
echo "Falta nome do vídeo ou caminho , Estrume"
echo "envftp.sh nomedovideo.mp4 /host.com.br/video/2009/11"
exit 19
fi
VIDEO1=$1
CAMINHO1=$2
####################### Dados FTP
caminhoArq="$VIDEO1"
host=host.com
usuario="usuario"
senha="senha"
# Identificação de arquivos e diretórios remotos a serem utilizados pelo ftp
localdir=`dirname $caminhoArq`
localfile=`basename $caminhoArq`
#################################
echo `date "+%Y-%m-%d %H:%M:%S INFO: [ FTP ] INICIO DA TRANSFERENCIA DE $VIDEO1 EM http://host.com/$CAMINHO1"` >> /var/log/enviovideo.log
################### Transação FTP
ftp -un $host <
quote PASS $senha
lcd $localdir
cd $CAMINHO1
binary
put $localfile
quit
EOF
################################