Você está na página 1de 8

Tratamento Digital de Vı́deo e Transmissão via Internet

Helder Mateus dos Reis Matos1 , Raphael Camilo Gomes Camara1


1
Faculdade de Computação – Instituto de Ciências Exatas e Naturais
Universidade Federal do Pará (UFPA)
Av. Augusto Correa 01, 66075-090 – Belém – PA – Brasil
{helder.matos,raphael.camara}@icen.ufpa.br

Abstract. This paper aims to conceptualize digital video processing and Inter-
net transmission, through its main characteristics and multimedia elements, ur-
gent technologies, and describe the development of a pratical application built
to solidify these concepts.

Resumo. Esse artigo tem o objetivo de conceituar tópicos de tratamento digital


de vı́deo e transmissão via Internet, através de suas principais caracterı́sticas
e elementos multimı́dia, tecnologias emergentes, e de descrever uma aplicação
prática construı́da para solidificar estes conceitos.

1. Introdução
Esse artigo tem o objetivo de explicar o tema do nosso trabalho, a finalidade do nosso pro-
jeto, descrever em detalhes as etapas de desenvolvimento,mostrar todos os elementos que
compõem o mesmo, e todas as tecnologias usadas para construção da nossa aplicação.

2. Contexto
Agora iremos ver a parte conceitual, de todos elementos que fazem parte do nosso tema, e
compõem o nosso projeto. Também vamos explicar o funcionamento, de cada um desses
elementos.

2.1. Video
Vı́deo, é uma tecnologia de processamento de sinais eletrônicos, analógicos ou digitais,
para capturar, armazenar e transmitir ou apresentar uma sucessão de imagens com im-
pressão de movimento. A aplicação principal da tecnologia de vı́deo resultou na televisão,
com todas as suas inúmeras utilizações, seja no entretenimento, na educação, engenharia,
ciência, indústria, segurança, defesa, artes visuais.

2.1.1. Propriedades de vı́deo

A Figura 1 faz referencia as principais caracterı́sticas de um vı́deo.


Figura 1. Propriedades de um video.

Segundo [Kurose and Ross 2009] essas são as principais caracterı́sticas de um


vı́deo.
Alta taxa de bits: O vı́deo distribuı́do pela Internet costuma variar de 100 kbits/s para
videoconferências de baixa qualidade até mais de 3 Mbits/s para os filmes de fluxo
de vı́deo com alta definição. Portanto, ao projetar aplicações de vı́deo em rede, a
primeira coisa que precisamos ter em mente são os altos requisitos de taxa de bits
do vı́deo.
Compactação: Um vı́deo pode ser compactado, compensando assim a qualidade com
a taxa de bits. Os algoritmos de compactação de hoje, prontos para uso, podem
compactar um vı́deo basicamente para qualquer taxa de bits desejada. É claro
que, quanto mais alta a taxa de bits, melhor a qualidade da imagem e melhor a
experiência de exibição geral do usuário.

2.2. Áudio
O áudio está relacionado com a técnica de gravação, transmissão e reprodução dos sons,
mas também pode ter outros significados. O sinal sonoro, que pode ser dividido em sinal
analógico ou digital, também se refere ao áudio [FRAHM 2021]. A escolha de um áudio
digital ou analógico, por exemplo, pode mudar completamente a experiência que você
terá com determinado aparelho.

2.3. Streaming
Streaming é a transmissão, em tempo real, de dados de áudio e vı́deo de um servidor para
um aparelho – como computador, celular ou smart TV [Cloudflare 2021]. Geralmente,
o termo streaming vem acompanhado das palavras serviço ou plataforma, já que se po-
pularizou pelas empresas que oferecem vı́deo (filmes, séries, documentários) ou áudio
(músicas, podcasts) para serem consumidos em tempo real pelos clientes [Nubank 2022].
A Figura 2 mostra o funcionamento com mais detalhes.
Figura 2. Funcionamento do streaming.

Basicamente, o streaming funciona como uma troca de dados constante entre um


aparelho e um servidor. Como o objetivo é assistir em tempo real, as informações são
enviadas em pequenos pacotes que podem ser consumidos quase que instantaneamente
pelo usuário [SiteHosting 2020]. Assim, ele não precisa esperar receber o filme inteiro
para poder assistir.

2.4. Videoconferência
Videoconferência é uma tecnologia de comunicação que permite que pessoas entrem em
contato umas com as outras de qualquer parte do mundo por uma transmissão em vı́deo
[Longen 2021]. Para acontecer essa transmissão, é preciso uma conexão estável com a
internet. Por conta disso, essa prática também é chamada frequentemente de videocon-
ferência online.

Figura 3. Ilustração de uma videoconferência.

O sistema funciona como um canal de TV bidirecional (e é usado todo o tempo


pelas emissoras) e proporciona uma grande naturalidade à colaboração entre essas pes-
soas. A Figura 3 acima ilustra uma sessão de videoconferência sendo realizada entre um
palestrante remoto e um grupo pequeno de pessoas em uma sala de reuniões, mas ela pode
ocorrer também em auditórios maiores.

3. Metodologia
Como forma de validar os conceitos explorados, foi desenvolvida uma aplicação de trans-
missão de vı́deo pela internet, utilizando módulos de captura de frames e programação de
sockets.

3.1. Captura de Frames


Segundo [Kurose and Ross 2009], a principal caracterı́stica de um vı́deo é a alta taxa de
bits envolvidos na digitalização da informação, atrelada a noção de sensação de movi-
mento processada por nosso cérebro ao receber como entrada uma sequência de quadros
de imagem digital, conhecidos como frames. Quanto menor a diferença de tempo entre
dois frames consecutivos maior a percepção de captura dos objetos em movimento, que é
possı́vel de ser observado a partir de 30 frames por segundo.
Desta forma, a tarefa inicial a ser atendida por uma aplicação de transmissão de
vı́deo é a captura dos frames. Para este fim, foi utilizada a biblioteca OpenCV, uma
referência no campo de visão computacional, com suporte para uma variedade de lin-
guagens de programação como C++, Java e Python. Quanto a esta última, uma biblio-
teca open-source chamada OpenCV-Python é disponibilizada como uma interface para a
implementação original da biblioteca, permitindo manter a performance computacional
do C++ com a facilidade da escrita e legibilidade do Python. Quando à ortogonalidade
desta implementação, a biblioteca de análise numérica Numpy é utilizada como estrutura
de dados principal para armazenamento das informações necessárias para tratamento das
imagens, na forma de arrays multidimensionais.

Figura 4. Captura de vı́deos com OpenCV-Python.

A Figura 4 ilustra as principais operações e métodos da OpenCV-Python relacio-


nados à captura de vı́deo que são inerentes a um objeto VideoCapture, incluindo:
• open(): abre dispositivo de captura (câmera), arquivo de vı́deo, ou stream via IP
para captura de vı́deo.
• read(): obtém, decodifica e retorna o próximo frame de vı́deo.
• isOpened(): informa se a captura de vı́deo iniciou.
• grab() e retrieve(): respectivamente obtém e retorna um frame qualquer.
• get() e set(): respectivamente retorna e configura uma propriedade do objeto.
• release(): fecha o objeto e interrompe a captura de vı́deo.

3.2. Programação de sockets


Sockets são formas de comunicação entre processos definidos como o par de extremi-
dades de um canal de comunicação, onde um par de processos ou threads se comuni-
cam em uma rede, identificado por um endereço IP concatenado com um número de
porta [Tanenbaum and van Steen 2007]. Foi implementada pelo grupo de distribuição do
software UNIX da Universidade de Berkeley como uma Interface de Programação de
Aplicações (Application Programming Interface - API).
A Figura 5 mostra como uma arquitetura cliente-servidor pode ser modelada com
sockets. Cada computador possui 216 possibilidades de portas disponı́veis para envio e
recepção de mensagens, onde um processo deve alocar pelo menos um par destas entre
as duas extremidades para estabelecimento da comunicação. Quanto aos tipos de sockets,
temos:
• Stream sockets: permitem comunicação via TCP, de forma bidirecional, confiável,
sequêncial e livre de duplicatas.
• Datagram sockets: permitem comunicação via UDP, de forma bidirecional, sem
ordenação de sequência e com possibilidade de duplicidade.
• Raw sockets: permitem acesso ao protocolo ICMP, são altamente dependentes da
interface provida por este protocolo, são orientado a datagramas e geralmente não
são usadas em aplicações

Figura 5. Modelo cliente-servidor em sockets.

Python possui uma API de sockets inclusa de forma nativa na linguagem. Desta
forma, a aplicação pretende combinar a facilidade de modelar comunicações simples en-
tre nós ligados por sockets utilizando as facilidades de processamento de imagens da
OpenCV-Python.
3.3. Aplicação
A Figura 6 mostra como um panorama geral de implementação da aplicação [Raj 2021].
O servidor irá criar o socket utilizando o protocolo TCP e entrar em modo de escuta,
possibilitando que até 5 clientes possam estabelecer conexões. Ao estabelecer e confirmar
uma conexão, o servidor incia a captura de frames e serializa cada array respectivo a um
frame em dados binários que possam ser empacotados e enviados como uma stream de
bytes.

Figura 6. Visão geral da aplicação.

Do lado do cliente, o estabelecimento da conexão é feita de forma análoga, com


a restrição de serem utilizados o mesmo IP e porta do servidor no momento da conexão.
Ao confirmar o estabelecimento da conexão, o cliente passa a ser capaz de receber e
enviar informações. Será utilizado um buffer de recepção de 1024 bytes para cada pa-
cote enviado. Ao receber estes pacotes, o cliente realiza a descompactação do array e a
decodificação deste em um frame, permitindo assim a recombinação do vı́deo original.

4. Resultados
A Figura 7 ilustra o funcionamento da aplicação em suas duas extremidades, do servidor
que transmite o vı́deo e do cliente que o recebe. A aplicação foi executada de forma
local em um único dispositivo, compartilhando portando o recurso de uso da webcam
e impossibilitando uma transmissão bidirecional. O uso da aplicação em dispositivos
separados irá se aproximar de como a transmissão de vı́deo pela internet em aplicações
dedicadas funciona na prática.
Figura 7. Transmissão de vı́deo com sockets.

5. Conclusão
Este trabalho abordou conceitos e técnicas de Tratamento Digital de Vı́deo e Transmissão
via Internet, no âmbito das Redes Multimı́dia. Foi possı́vel destacar as principais carac-
terı́sticas dos componentes desta tecnologia, vı́deo e áudio, além de aplicações emergentes
que envolvem vı́deos, streaming e vı́deoconferência. Uma aplicação simples de video-
conferência foi desenvolvida, a fim de por em prática alguns conceitos de tratamento e
transmissão de vı́deo de maneira local e centralizada.
Como propostas de trabalhos futuros, a ampliação da aplicação para comportar
comunicações bidirecionais entre os vários nós de conexão é a mais prioritária a ser ex-
plorada. Em seguida, a distribuição desta aplicação para acesso facilitado via Internet
pode vir a elucidar outros princı́pios de preparação, compressão e transmissão de vı́deo.
Por fim, uma interface gráfica que facilite a visualização das telas pode integrar os diver-
sos módulos propostos em uma aplicação mais robusta.
Referências
Cloudflare (2021). O que é streaming? — como funciona o streaming de vı́deo. Date of
access: December 14, 2022.
FRAHM (2021). Áudio, música e som: entenda as diferenças entre os conceitos. Date of
access: December 14, 2022.
Kurose, J. F. and Ross, K. W. (2009). Computer Networking: A Top-Down Approach.
Addison-Wesley Publishing Company, USA, 5th edition.
Longen, A. (2021). Videoconferência: O que é, vantagens, como fazer e melhores ferra-
mentas. Date of access: December 14, 2022.
Nubank (2022). O que é streaming e como funciona essa tecnologia? Date of access:
December 14, 2022.
Raj, A. (2021). Video streaming using python. Date of access: December 14, 2022.
SiteHosting (2020). Qual é a diferença de streaming de vı́deo ao vivo para um streaming
de vı́deo com playlist (web tv)? Date of access: December 14, 2022.
Tanenbaum, A. S. and van Steen, M. (2007). Distributed Systems: Principles and Para-
digms. Pearson Prentice Hall, Upper Saddle River, NJ, 2 edition.

Você também pode gostar