📹 Enviar vídeos do DVR para Telegram automaticamente
Este tutorial mostra como configurar um ambiente completo para receber vídeos do DVR via FTP, converter automaticamente para MP4 e enviar como alerta no Telegram.
🎯 Objetivo
Receber arquivos de vídeo do DVR, detectar novos eventos, converter de .dav para .mp4 e enviar diretamente para o Telegram de forma automática.
🔄 Fluxo
DVR → FTP → Servidor Ubuntu → Script Python → ffmpeg → Telegram
⚙️ O que esse projeto faz
- Monitora a pasta onde o DVR grava os vídeos
- Espera o arquivo terminar de crescer antes de processar
- Converte automaticamente de DAV para MP4
- Envia o vídeo para o Telegram
- Evita envio duplicado com arquivo de controle
- Pode remover arquivos após envio
- Roda 24/7 com systemd
📁 Estrutura usada
/home/dvruser/srv/home/upload /home/scripts/ftp_dvr_videos.tel.py /root/srv50env /etc/systemd/system/dvr-videos-telegram.service
1️⃣ Dependências
apt update apt install -y vsftpd ffmpeg python3 python3-venv curl
2️⃣ Criar usuário e diretórios
useradd -m -s /bin/bash dvruser mkdir -p /home/dvruser/srv/home/upload chown -R dvruser:dvruser /home/dvruser/srv
3️⃣ Configurar FTP
Configuração do FTP no DVR para envio de vídeos
Edite o arquivo:
/etc/vsftpd.conf
Configuração essencial:
listen=YES listen_ipv6=NO anonymous_enable=NO local_enable=YES write_enable=YES chroot_local_user=YES allow_writeable_chroot=YES local_root=/home/dvruser/srv pasv_enable=YES pasv_min_port=40000 pasv_max_port=40100
Depois reinicie e habilite o serviço:
systemctl restart vsftpd systemctl enable vsftpd
4️⃣ Criar ambiente Python
python3 -m venv /root/srv50env source /root/srv50env/bin/activate pip install requests deactivate
5️⃣ Script de vídeos
O script monitora a pasta de upload, processa apenas arquivos .dav, aguarda estabilização do arquivo, converte com ffmpeg e envia via sendVideo para o Telegram.
/home/scripts/ftp_dvr_videos.tel.py
Configurações importantes no script:
- SEND_EXISTING_ON_START = False para produção
- DELETE_DAV_AFTER_SUCCESS = True ou False conforme sua necessidade
- DELETE_MP4_AFTER_SUCCESS = True
6️⃣ Criar serviço systemd
Crie o arquivo:
/etc/systemd/system/dvr-videos-telegram.service
Conteúdo:
[Unit] Description=Watcher DVR FTP -> Telegram (VÍDEOS) After=network-online.target Wants=network-online.target [Service] Type=simple User=root Group=root WorkingDirectory=/home/dvruser/srv/home/upload Environment=PYTHONUNBUFFERED=1 Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ExecStart=/root/srv50env/bin/python /home/scripts/ftp_dvr_videos.tel.py Restart=always RestartSec=5 StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target
7️⃣ Ativar o serviço
systemctl daemon-reload systemctl enable dvr-videos-telegram systemctl restart dvr-videos-telegram
Para acompanhar os logs:
journalctl -u dvr-videos-telegram -f
8️⃣ Teste manual
source /root/srv50env/bin/activate python3 /home/scripts/ftp_dvr_videos.tel.py
Depois gere um vídeo de evento no DVR e acompanhe o envio.
9️⃣ Limpeza automática com cron
Edite o cron:
crontab -e
Adicione:
# Remove vídeos DAV com mais de 7 dias 0 3 * * * find /home/dvruser/srv/home/upload -type f -name "*.dav" -mtime +7 -delete # Remove MP4 temporários com mais de 1 dia 0 3 * * * find /home/dvruser/srv/home/upload/.tmp_mp4 -type f -name "*.mp4" -mtime +1 -delete
🔟 Fluxo final do processamento
DVR grava .dav ↓ Servidor recebe via FTP ↓ Script detecta novo arquivo ↓ Espera estabilizar ↓ Converte para MP4 ↓ Envia para Telegram ↓ Remove arquivos conforme configuração
✅ Observações importantes
- Use SEND_EXISTING_ON_START=True apenas em teste
- Em produção, mantenha False
- O bot precisa estar no grupo do Telegram
- O CHAT_ID deve ser válido
- O ffmpeg precisa estar disponível no sistema
📦 Resultado final
🎥 Resultado na prática
Vídeo enviado automaticamente do DVR para o Telegram
- DVR envia vídeos via FTP
- Servidor recebe automaticamente
- Script converte DAV para MP4
- Telegram recebe os vídeos como alerta
- Serviço inicia automaticamente no boot