videoconvert_buildout
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:A buildout to run and develop the nsi.videoconvert package
VideoConvert Buildout
=====================


Sistema operacional
-------------------

Todos os serviços são desenvolvidos sob o sistema operacional **Debian 6 (Squeeze) 64 bits** e seu funcionamento só
é garantido em tal sistema operacional.

Dependências do sistema
-----------------------

Para o funcionamento do serviço, é necessário que os seguintes pacotes estejam instalados no sistema: ``python-dev, python-setuptools,
python-webunit, python-docutils, gnuplot, python-gst0.10, gstreamer-tools, gstreamer0.10-ffmpeg, gstreamer0.10-plugins-good
gstreamer0.10-plugins-bad, gstreamer0.10-plugins-good, gstreamer0.10-x, python-gtk2``.

Durante a instalação do serviço, ao executar o comando ``make``, todas essas dependências serão devidamente instaladas.


Arquitetura
-----------

Como pode ser visto no pacote **nsi.videoconvert** o sistema consiste em um webservice **RESTful** hostiado por padrão na porta 8080
na url **http://localhost:8080/**. Ele responde aos verbos **POST e **GET**. Cada verbo correspondendo a uma ação do serviço de granularização:
POST para submeter um vídeo, GET para verificar o estado da granularização. Todos os verbos recebem parâmetros no formato **json**,
para melhor interoperabilidade com qualquer outra ferramenta. Para maior entendimento sobre a arquitetura, verificar o diagrama
na pasta ``docs``.


POST
    Recebe em um parâmetro **video** o vídeo a ser convertido codificado em **base64**, para evitar problemas de encoding.
    Responde a requisição com as chaves onde estarão o vídeos e os grãos correspondentes a ele no SAM, **video_key** e **grains_key**.
    É possível enviar uma URL para receber um **callback** assim que o vídeo for convertido. Caso o parêmtro **callback**
    seja fornecido, ao término da conversão, um dos workers realizará uma requisição para tal URL com o verbo
    POST (se o usuário desejar usar outro verbo, ele deverá fornecer o parâmetro **verb** na requisição),
    fornecendo no corpo dela uma chave **done** com valor verdadeiro e a chave **key**, com a chave para acesso aos grãos.

GET
    Também é possível receber se um determinado vídeo já foi convertido fazendo uma requisição do tipo **GET** para o servidor,
    passando como parâmetro **key** a chave do vídeo que é retornada pelo método **POST**. O retorno será uma chave
    **done**, com valor verdadeiro caso os grão estejam prontos, e falso para o contrário.


Bibliotecas
-----------

- Cyclone
Cyclone é um fork do Tornado, um webserver criado originalmente pelo FriendFeed,
que foi comprado pelo Facebook mais tarde e teve seu código aberto. É baseado no
Twisted e tem suporte a bancos noSQL, como MongoDB e Redis, XMLRPC e JsonRPC,
além de um cliente HTTP assíncrono.

- txredisapi
É uma API que promove acesso assíncrono ao banco de dados Redis, feita em cima do Twisted.

- nsi.multimedia
API criada pelo próprio NSI para fazer converter qual vídeo para o formato ogm.


Instalação
----------

Assumindo que o SAM já está devidamente instalado e iniciado na máquina, criar
um ambiente virtual usando **python 2.6**, sem a opção **--no-site-packages** e com o
mesmo ativado executar ``make`` na pasta do buildout.


Executando
----------

Na pasta do buildout do SAM, executar: ``bin/samctl start``, adicionar um usuário
para o VideoConvert com: ``bin/add-user.py usuario senha`` e na pasta do buildout
do VideoConvert executar: ``bin/videoconvert_ctl start``.

**IMPORTANTE**: Deve ser configurado no arquivo ``buildout.cfg`` as informações de acesso
ao **SAM**.

É indispensável que o serviço de filas esteja ligado para que tudo funciona
perfeitamente. Para instalar o serviço de filas basta baixar o ``servicequeue_buildout``
e rodar o  utilitário ``make`` contido nele. Depois, basta executar o comando
``bin/rabbitmq-server -detached`` para ativar o serviço de filas.

Tudo deverá estar funcionando normalmente (caso contrário me mande um e-mail).


Rodando os testes
-----------------

Basta executar: ``make test`` na raiz do projeto.


Testes de carga
---------------

Com o serviço de armazenamento (SAM) rodando, basta executar
``make load_test`` para rodar os testes de carga. Automaticamente, depois que o teste terminar, um **relatório em HTML**
será gerado na pasta ``tests/funkload_report`` com informações e gráficos relevantes sobre o tete.

Para alterar configurações do servidor de granularização e do teste de carga, ver arquivo ``tests/VideoConvertBench.conf``.

本源码包内暂不包含可直接显示的源代码文件,请下载源码包。