quinta-feira, 26 de dezembro de 2013

ZoneMinder no CentOS 6

Novo método!


ATENÇÃO. ESSE POST ESTÁ SUPERADO. AGORA O ZONEMINDER PODE SER INSTALADO DE FORMA MUITO MAIS FÁCIL COM O REPOSITÓRIO PRÓPRIO PARA O CentOS. VEJA ESSE POST.

Sobre o ZoneMinder


Nesse post foi demonstrado como instalar o ZoneMinder no Ubuntu Server. Se quiser informações sobre a instalação das câmeras IP e sobre o que é o ZoneMinder, abra o link já referido.

Instalando no CentOS


Segue agora o passo a passo para instalar o poderoso sistema de vigilância no CentOS 6 (Versão 6.5, arquitetura x86_64).

OBS: Todos os comandos aqui descritos foram executados como root.

Baixe nesse link ou em outro link da lista pública de espelhos a versão mínima do CentOS 6.5 (arquivo CentOS-6.5-x86_64-minimal.iso ou o torrent equivalente).

Instale o CentOS.

Após o primeiro boot, habilite a interface de rede e defina o IP da máquina.
nano /etc/sysconfig/network-scripts/ifcfg-eth0
Para IP dinâmico, simplesmente altere a opção ONBOOT conforme abaixo e reinicie o sistema:
ONBOOT="yes"
Para IP estático, faça as alterações necessárias para ficar assim:
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.0.100
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=8.8.8.8
DNS2=208.67.222.222
Para evitar lentidão ao conectar via ssh:
nano /etc/ssh/sshd_config
E deixe as seguintes opções conforme abaixo:
UseDNS no
GSSAPIAuthentication no
Reinicie os serviços de rede e do servidor ssh:
service network restart
service sshd restart
Atualize o sistema
yum update -y
Instale o repositório RepoForge (antigo RPMForge):
yum install wget


wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm


yum install rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
Instale o repositório EPEL
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
Verifique se os repositórios foram corretamente instalados:
yum repolist
Instale as dependências necessárias:
wget --output-document=perl-X10-0.03-1.noarch.rpm http://bauerhaus.dyndns.org/filebrowser/download/2500

wget --output-document=perl-Astro-SunTime-0.01-1.noarch.rpm http://bauerhaus.dyndns.org/filebrowser/download/2501

wget --output-document=perl-Sys-Mmap-0.14-2.el6.x86_64.rpm http://bauerhaus.dyndns.org/filebrowser/download/2750

yum install perl-Astro-SunTime-0.01-1.noarch.rpm perl-X10-0.03-1.noarch.rpm perl-Sys-Mmap-0.14-2.el6.x86_64.rpm
Desabilite o SELINUX
setenforce 0

nano /etc/selinux/config

SELINUX=disabled
Faça o download do pacote zoneminder (essa versão já inclui bugfixes e as melhorias de performance conforme descritas aqui)
wget --output-document=zoneminder-1.26.5-1.el6.x86_64.rpm http://bauerhaus.dyndns.org/filebrowser/download/2745

yum install zoneminder-1.26.5-1.el6.x86_64.rpm
Proteja o servidor mysql definindo senha do usuário root e removendo tabelas de teste:
service mysqld start
/usr/bin/mysql_secure_installation
chkconfig mysqld on
Crie o banco de dados do ZoneMinder (use o password de root definido no item anterior):
mysql -uroot -p
mysql> create database zm;
mysql> grant select,insert,update,delete,alter on zm.* to 'zmuser'@localhost identified by 'zmpass';
mysql> exit;

mysql -uroot -p < /usr/share/zoneminder/db/zm_create.sql
mysqladmin -uroot -p reload
(OBS: Se você escolheu outros usuário e senha para o bando de dados zm no item anterior, então edite o arquivo /etc/zm.conf e faça os ajustes em ZM_DB_USER e ZM_DB_PASS)

Ajuste o timezone da sua localidade nas configurações do php, exemplo:
nano /etc/php.ini
date.timezone = America/Sao_Paulo
Habilite a interface web do ZoneMinder (ela vem desabilitada por padrão):
nano /etc/httpd/conf.d/zoneminder.conf
Apague ou comente (com um #) a linha "Deny from all # DELETE THIS LINE".

Alguns ajustes para evitar mensagens de erro do apache (altere conforme suas configurações):
echo "ServerName localhost" > /etc/httpd/conf.d/fqdn.conf
Inicie o servidor web (apache) e configure-o para iniciar automaticamente a cada boot:
service httpd start
chkconfig httpd on
Abra as portas necessárias no firewall (iptables) do CentOS:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
/sbin/service iptables save
iptables -L -v
Ou, se quiser fazer por interface gráfica:
yum install system-config-firewall
system-config-firewall
# Personalizar
# Marque as opções
WWW (HTTP)
WWW Seguro (HTTPS) (caso você queira habilitar acesso criptografado)
Fechar
Ok

Reinicie o sistema
reboot
ou
init 6
No seu navegador, aponte para http://<ip da máquina>/zm

Se quiser habilitar SSL (navagação segura):
yum install mod_ssl openssl
Gere a nova chave (auto-assinada) e novo certificado:
openssl genrsa -out ca.key 1024
openssl req -new -key ca.key -out ca.csr
openssl x509 -req -days 730 -in ca.csr -signkey ca.key -out ca.crt
Mova para os lugares corretos
mv -f ca.crt /etc/pki/tls/certs/localhost.crt
mv -f ca.key /etc/pki/tls/private/localhost.key
Reinicie o servidor apache (web)
service httpd restart
No seu navegador, aponte para https://<ip da máquina>/zm

ALGUMAS DICAS DE PERFORMANCE


O servidor ZoneMinder não pode ficar com um "load" muito alto. Se isso ocorrer, você terá instabilidade e perderá alguns "frames" de imagens.

A seguir algumas dicas para tentar melhorar a performance.

1. Para sistemas de arquivos Ext4, adicione as seguintes opções no /etc/fstab:
noatime,nodiratime,commit=120,data=writeback

Exemplo
UUID=ba4acd10-ae6d-465c-82fe-9752017480ee /var/lib/zoneminder     ext4    defaults,noatime,nodiratime,commit=120,data=writeback        0 2
2. Habilite nas opções do ZoneMinder o CPU_EXTENSIONS, para obter vantagem das extensões SSE2/SSE3 do processador.

3. Habilite FAST_IMAGE_BLENDS. Esse tipo de blend é extremamente rápido e não envolve multiplicação ou divisão, o que pode impactar a performance.

4. Desabilite COLOUR_JPEG_FILES a não ser que realmente precise disso. Essa opção converte imagens em grayscale para cor antes de armazená-las como jpegs. Isso impacta a performance e usa mais espaço no seu disco, então o melhor é deixar desabilitado.

5. Desabilite CREATE_ANALYSIS_IMAGES se você usa motion detection com Blob, mas não precisa das imagens de análise.

6. Embora óbvio, tenha certeza que desabilitou EXTRA_DEBUG e RECORD_DIAG_IMAGES.

7. Para câmeras locais (não IP): Habilite ZM_V4L_MULTI_BUFFER se puder. Tente fazer correspondência entre a paleta de caputra (Capture Palette) e o colorspace alvo (Target Colorspace), para evitar a necessidade de conversão de formato.

8. Se estiver usando Motion Detection (Modect) para as câmeras, quanto menos zonas, mais rápido será o sistema. Antes de ficar criando zonas, pense se realmente você tem necessidade de mais de uma zona.

9. Experimente usar a opção 8 bit grayscale nas câmeras (Target Colorspace), em vez de cores 24 ou 32 bits. Além de as imagens ficarem menores, o processamento e análise delas será mais rápido. Você realmente precisa registrar imagens coloridas? Faça opção consciente.

10. Quantos quadros por segundo (frames per second - FPS) você realmente precisa nas câmeras? Pense nisso. Não há qualquer razão para caputar o vídeo a 20 fps se você não tem qualquer necessidade específica para isso. 5 fps são suficientes para a maioria dos casos e produz bons vídeos.

11. Use a libjpeg-turbo. A instalação pelo método descrito neste post se encarregará disso.

12. Ajuste as opções "Reference Image Blend %ge" e "Alarm Reference Image Blend %ge" de cada monitor apropriadamente. Quanto à primeira, use 6.25% para câmeras internas e 12.5% para externas. Quando à segunda, experimente deixar todas as câmeras em 6.25%. Trata-se de nova funcionalidade da versão do ZoneMinder 1.26.5. Antes de ajustar essa opção alguns eventos estavam ficando quase infinitos (disparava o alarme do modect e não parava mais de gravar).

ATENÇÃO


As opções Maximum FPS e Alarm Maximum FPS são apenas para câmeras analógicas. Não use essas opções para câmeras remotas IP, caso contrário você terá falhas na visualização "ao vivo" e durante as gravações dos eventos. A implementação para câmeras remotas ainda não foi realizada.

sexta-feira, 20 de dezembro de 2013

easyLife para Fedora 20 está disponível!

Com grande satisfação informo que easyLife para o recém lançado Fedora 20 já está disponível para download.

Fedora é um sistema operacional completamente open source para todos os tipos de computadores. Assim como Ubuntu e outros, também tem como base o núcleo (kernel) chamado Linux.

easyLife é um aplicativo para Fedora que ajuda os usuários novos a instalarem as principais ferramentas do dia a dia do uso de um desktop, como por exemplo Flash Player, Codecs, Video players, Plugin Java para o navegador e assim por diante. Tudo apenas com cliques do mouse.

Para instalar o easyLife, basta baixar o pacote .rpm e clicar duas vezes sobre ele. Será solicitada a senha do administrador do sistema (usuário root) e a instalação será completada.

Após, clicar em "Atividades" e digitar easylife. Pronto, você verá o ícone do programa. É só clicar e escolher quais as opções você deseja que ele execute e instale.

Tela de opções do easyLife. É só escolher quais você deseja e ele faz todo o trabalho.
Faça o download aqui e aproveite!

sábado, 7 de dezembro de 2013

Monitoramento de segurança com câmeras IP, ZoneMinder e Ubuntu 12.04 LTS

Hoje em dia é fácil montar solução de monitoramento por câmeras IP sem muito custo ou trabalho (bem, trabalho dá um pouquinho dependendo das questões físicas da sua casa ou empresa, como por exemplo tubulação para passar cabos etc.).

A receita 100% livre é Ubuntu Server + ZoneMinder.

Ubuntu é o sistema operacional baseado em Linux mais conhecido que existe. A vantagem de usar a versão "Server" do Ubuntu é porque você não instala por padrão interface gráfica e outros tantos programas que não serão usados.

ZoneMinder é um conjunto integrado de aplicações que provê solução completa de vigilância e possibilita caputra, análise, gravação e monitoramente de qualquer CCTV ou câmera de segurança conectada a uma máquina baseada em Linux.

O ZoneMinder é muito interessante porque trabalha com o sistema "Motion Detection", ou seja, Sensor de Movimento, fazendo com que a gravação seja iniciada se algum movimento for detectado. Mais do que isso, permite que você crie e edite zonas de interesse, ou seja, somente se o movimento ocorrer dentro da zona de interesse é que a gravação será acionada.

Painel de edição de zonas. Somente o movimento na área verde acionará a gravação.
A primeira questão a se preocupar é com a passagem de cabos. Se não tiver energia elétrica perto dos locais onde as câmeras ficarão posicionadas, você poderá usar apenas o cabo de rede para enviar dados + energia para a câmera IP. Nesse caso, há duas possibilidades:

  1. comprar câmeras IP com tecnologia PoE (Power over Ethernet), que em geral custam bem caro; 
  2. comprar câmeras IP tradicionais e usar separadores e injetores para injetar a energia no cabo de rede e depois separá-la na outra ponta, para energizar a câmera.

Injetor e Separador PoE com plugue de energia P4
Isso é possível porque, na verdade, dos quatro pares de cabos que compõem o cabo de rede, um par não é usado para nada e, portanto, é aproveitado para transmitir a energia.

A maioria das câmeras IP possuem fonte de energia com plugue do tipo P4, que é o mesmo desses kits de injetor + separador PoE, então não deve haver problemas.

A grande questão ao usar esses injetores e separadores é que dificilmente a eletricidade chegará na outra ponta com a mesma intensidade e, em razão disso, câmeras que funcionam a 5V, por exemplo, provavelmente não ligarão. Isso ocorre porque a voltagem é muito pequena e a perda que ocorre nos injetores e por conta do próprio cabo de rede (Cat 5e) torna-se significante.

Para contornar esse problema, pode ser usada fonte de energia com voltagem regulável. Aumentando-se a voltagem da fonte, aumenta-se o "empurrão" com que a energia chega do outro lado e, assim, compensam-se as perdas pelo caminho, fazendo com que a câmera consiga a corrente (amperagem) suficiente.

Fonte de energia com voltagem regulável. Fornece até 1500mA.
Mas muito cuidado: vá fazendo testes começando sempre pela menor voltagem e aumentando aos poucos, caso contrário poderá queimar sua câmera. Faça isso por sua conta e risco. VOCÊ FOI AVISADO.

Em distâncias de 30 metros, por exemplo, consegui ligar câmeras que funcionam a 5V regulando a voltagem da fonte para 8,4V, para compensar as perdas. Em distâncias menores precisei ajustar para 7.5V e assim por diante.

Solução melhor será você emendar um regulador de tensão no separador. Ou seja, você corta os fios do separador que é ligado à câmera 5V, antes do conector, e insere um regulador de tensão, que converte tensões maiores (de 23V a 5.5V) para 5V, como por exemplo o BEC Turnigy 5V/3A, 6V/3A ou algum semelhante.

Sim, é uma "gambiarra", mas funciona! Com isso, você pode, por exemplo, deixar uma fonte de 12V, fazendo com que a distância seja superada, e o regulador de tensão se encarregará de reduzir a voltagem para 5V justamente antes de a corrente elétrica entrar na câmera.



Já as câmeras que funcionam a 12V em geral não apresentam esse problema porque a voltagem de 12V já dá um "empurrão" suficiente na eletricidade até o outro lado. Nesse caso, a própria fonte que vem com a câmera poderá ser usada. Não será preciso de fonte de mais de 12V.


Antes de usar suas câmeras no ZoneMinder, tenha certeza de elas estejam funcionando corretamente. Faça testes de uso pela interface web própria da câmera ou por endereços de acesso direto (por exemplo: http://192.168.0.25/video.cgi?user=usuario&pws=senha).

Para instalar e configurar o servidor que rodará o ZoneMinder, segue o passo a passo.

Baixe e instale o Ubuntu Server 12.04 LTS.

Antes de mais nada, atualize todo o sistema e reinicie a máquina:
sudo apt-get update && sudo apt-get dist-upgrade -y && sudo apt-get upgrade -y


sudo init 6
O ideal é que o servidor tenha IP fixo, para poder ser facilmente localizado dentro da rede e também para que possa ser mapeado no "Port Forwarding" do seu roteador, para que seja acessível pela internet externamente.
sudo nano /etc/network/interfaces
Mude a "primary network interface" para um endereço IP estático, por exemplo:
# The primary network interface
auto eth0
    iface eth0 inet static
    address 192.168.0.100
    netmask 255.255.255.0
    gateway 192.168.0.1
    dns-nameservers 8.8.8.8 208.67.222.222 208.67.220.220
Reinicie novamente a máquina para as mudanças operarem efeito.
sudo init 6
Agora será necessário instalar o servidor web, servidor de banco de dados e php - alguns componentes do "LAMP stack" (Linux + Apache + MySQL + PHP).
sudo apt-get install mysql-server apache2 php5 libapache2-mod-php5
Pequeno ajuste para evitar mensagens de erro do apache:
echo "ServerName localhost" | sudo tee /etc/apache2/conf.d/fqdn
Para usar conexão web segura (altamente recomendado):
sudo make-ssl-cert generate-default-snakeoil --force-overwrite
sudo a2enmod ssl
sudo a2ensite default-ssl
sudo service apache2 restart
Abra um navegador e veja se o servidor apache está funcionando (http://ipdoservidor, por ex., http://192.168.0.19, ou, no caso de conexão segura, https://ipdoservidor etc.)

A última versão do ZoneMinder está disponível nesse repositório pessoal (PPA):
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:iconnor/zoneminder
Para instalar o ZoneMinder e o codec x264:
sudo apt-get update && sudo apt-get install zoneminder x264 libavcodec-extra-53
Durante a instalação, serão perguntadas questões sobre configuração do Nullmailer. Pode ignorar e pressionar "Enter" em todas, pois ao final vamos remover o Nullmailer (a versão dos repositórios do Ubuntu 12.04 LTS não trabalham com STARTTLS e qualquer servidor de email decente requer autenticação criptografada para funcionar).

Se aparecer a mensagem: invoke-rc.d: initscript zoneminder, action "status" failed., não se importe.

Aguarde mais um pouco que o zoneminder será iniciado em instantes:
Starting ZoneMinder: success
Agora adicione atraso para que o ZoneMinder somente seja iniciado durante o boot após o servidor MySQL já estar ativo. Adicione a linha "sleep 15" antes de zmfix -a, conforme demonstrado abaixo.
nano /etc/init.d/zoneminder
start() { echo -n "Starting $prog: " mkdir -p $RUNDIR && chown www-data:www-data $RUNDIR mkdir -p $TMPDIR && chown www-data:www-data $TMPDIR # Delay to allow MySQL to start before Zoneminder sleep 15 zmfix -a $command start
Crie link para o arquivo de configuração do zoneminder para que o apache saiba da existência dele:
sudo ln -s /etc/zm/apache.conf /etc/apache2/conf.d/zoneminder.conf
Adicione o usuário www-data ao grupo video:
sudo adduser www-data video
O Cambozola é um visualizador simples para fluxo jpeg de multipartes que geralmente são originados de webcams, enviando múltiplas imagens por segundo. O Cambozola é um substituto que exibe as imagens corretamente. O ZoneMinder pode fazer uso dele. Para instalá-lo:
wget http://www.andywilcock.com/code/cambozola/cambozola-latest.tar.gz
tar zxvf cambozola-latest.tar.gz
sudo cp -v cambozola-*/dist/cambozola.jar /usr/share/zoneminder
sudo chown root:www-data /usr/share/zoneminder/cambozola.jar
sudo chmod ug+x /usr/share/zoneminder/cambozola.jar
rm -rf cambozola-*
Remova o nullmailer e instale o ssmtp:
sudo apt-get remove nullmailer
sudo apt-get install ssmtp
Configure o ssmtp (faça as alterações necessárias ao seu email etc.):
nano /etc/ssmtp/ssmtp.conf

#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=seuemail@gmail.com
# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.gmail.com:587
AuthUser=seuemail@gmail.com
AuthPass=suasenhadogmail
UseTLS=YES
UseSTARTTLS=YES
# Where will the mail seem to come from?
rewriteDomain=seudominio.com.br
# The full hostname
hostname=nomedohost.seudominio.com.br
# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES
Instale o ntpd para manter o horário do servidor sempre atualizado:
sudo apt-get install ntp
Pronto, agora pode abrir o ZoneMinder no navegador e começar a configurá-lo:
http://ipdoservidor/zm ou https://ipdoservidor/zm
ATENÇÃO. Antes de mais nada:

Cique em "Options"
Desmarque: Check with zoneminder.com for updated versions (?)
Clique em "Save"
Clique na aba "Images"
Marque "Is the (optional) cambozola java streaming client installed (?)"
Clique "Save"

E, por último, habilite o sistema de autenticação por senha, para deixar seu ZoneMinder seguro.

Faça isso antes de adicionar qualquer câmera, caso contrário terá problemas e não conseguirá ver as imagens das câmeras em razão de problemas de autenticação:

Clique em "Options"
Marque a opção "OPT_USE_AUTH | Authenticate user logins to ZoneMinder (?)"
Clique "Save"

A senha padrão do usuário admin será admin.

Agora vá de novo em opções e na aba "Users" modifique a senha do admin e se for o caso crie outros usuários, definindo os níveis de permissão para cada um!

Se quiser exportar os eventos como vídeos mp4 (x264) de alta qualidade:

Clique em "Options" -> aba "Images"
Ajuste a opção FFMPEG_OUTPUT_OPTIONS para:

-r 25 -vcodec libx264 -threads 2 -b 2000k -minrate 800k -maxrate 5000k

Ajuste a opção FFMPEG_FORMATS para:

mp4* mpg mpeg wmv asf avi mov swf 3gp**

Reinicie o servidor:
sudo init 6
Boa sorte e não deixe de ler o FAQ do ZoneMinder para configurá-lo corretamente e resolver eventuais problemas.

Exemplo de câmera na opção de "Monitor".
Depois que estiver tudo certo e funcionando, experimente os aplicativos que controlam o ZoneMinder pelo celular, como por exemplo o ZmView:



Fontes


quinta-feira, 5 de dezembro de 2013

Como emitir a GPS do INSS incidente sobre o 13o. salário

Todo fim de ano as pessoas me fazem a mesma pergunta:
- Por que não consigo pagar a guia da previdência social (GPS) sobre o décimo terceiro salário pelo site do banco na internet?
A resposta é muito simples, e diz respeito ao código de pagamento e ao período de apuração, mas a questão é que pergunta não precisaria ser feita se as pessoas se condicionassem a emitir a guia sempre pelo site da Receita Federal do Brasil, em vez de ficarem preenchendo manualmente a guia diretamente no site do Banco (o que é, além de tudo, perda de tempo).

A emissão da guia pelo site da Receita Federal possui importantes vantagens:

1 - O site faz todos os cálculos (inclusive de eventuais atrasos) somente com o fornecimento do número PIS ou NIT do trabalhador; 
2 - O sistema calcula sozinho as alíquotas e já demonstra a parte a ser suportada pelo empregado e a parte a ser descontada do trabalhador (isso é relevante porque a depender do valor do salário bruto a alíquota pode variar);

3 - É impossível de errar o preenchimento da guia, pois se o código PIS ou NIT forem digitados incorretamente o sistema não puxará os dados do trabalhador; 
4 - A guia sai com código de barras, o que significa que você não precisará preencher os dados da guia manualmente no site do seu banco, mas somente, óbvio, o código de barras; 
5 - Você não perde tempo preenchendo campos como nome e endereço, que são de qualquer forma completamente ignorados pelo sistema da previdência social (o único dado que realmente importa é o NIT ou PIS); 
6 - Você pode emitir várias guias GPS de uma vez;
Se, mesmo assim, você quiser continuar a ficar preenchendo manualmente que nem besta a guia GPS no seu bankline, fique à vontade. O tempo é todo seu para ser desperdiçado.

Voltando à questão da GPS sobre o décimo terceiro salário, use a competência 13/2013 e deixe que o sistema se preocupe em preencher todo o resto. Depois, é só pagar a guia usando o código de barras no site do seu banco.



Se você é como e gosta de evitar erros ao mesmo tempo em que economiza tempo, segue o link do site da Receita Federal para emissão das guias com código de barras:

http://www.receita.fazenda.gov.br/previdencia/gps/default.htm

Lembrando que:

Para o INSS incidente sobre o 13º salário (para as empresas e empregadores domésticos), o prazo de pagamento é até o dia 20 de dezembro, antecipando-se o vencimento para o dia útil imediatamente anterior, quando não houver expediente bancário na data do vencimento.

quarta-feira, 4 de dezembro de 2013

Como inverter um vídeo verticalmente

Se você já teve que manusear arquivos de vídeo do tipo GEOX (MPEG-4) gerados pelos aplicativos terríveis da GeoVision - sistema de monitoramento por câmeras -, sabe que o vídeo será exibido invertido, por exemplo, no VLC.

Arquivo do tipo GEOX criado pelo programa GeoVision

Vídeo invertido verticalmente
Após alguma procura, achei solução rápida e prática para resolver esse problema em qualquer sistema operacional do tipo GNU/Linux.

Basta usar o avconv, sucessor do ffmpeg (que será descontinuado conforme informado pelo próprio programa: "*** THIS PROGRAM IS DEPRECATED *** This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.").

Primeiro, instale a ferramenta:
sudo apt-get install libav-tools
Agora, a conversão propriamente dita:
avconv -i videoinvertido.avi -vf "vflip" videocorreto.avi
O segredo é o filtro 'vflip', que significa "vertical flip".

Após a conversão, tudo fica ok:


Deve ser observado, no entanto, que toda modificação em formato de vídeo comprimido, como é o caso do GEOX, resultará em perda de qualidade como resultado da descompressão, modificação, e recodificação para que possa ser gravado. Então o resultado terá sim menor qualidade que o original.