Manipulação de vídeo e programação

1. Manipulação de vídeo e programação

William Calixto Pereira
negowill

(usa Fedora)

Enviado em 24/04/2015 - 10:44h

Olá pessoa!
Eu tenho vídeos de trechos de uma rodovia. Quero escrever um programa em que eu possa abrir o vídeo (dois vídeos: Um com camera voltada para frente do veículo e outro com camera voltada para trás do veículo) na quilometragem que quiser, por exemplo; digamos que queira ver a filmagem de todo trecho entre os Km's 70 e 71, então eu digitaria a quilometragem e abriria duas telinhas, cada uma com a filmagem de uma câmera neste trecho.
O que pensei em fazer:
1- Dividir o filme em vários filmes com trechos de 1 em 1 quilometro;
2- Escrever um programa que abra o filme desejado de acordo com a quilometragem digitada pelo usuário;
3- Criar uma interface amigável para o mesmo.
Detalhe: Precisaria que o mesmo pudesse ser aberto tanto na plataforma linux como na windows.
Alguma sugestão? Que ferramentas aconselham para cada etapa do projeto?


  


2. Re: Manipulação de vídeo e programação

Gustavo Valério
GustavoValerio

(usa Debian)

Enviado em 25/04/2015 - 20:52h

Se vai criar um programa e quer que seja multiplataforma, há algumas opções:

1. Criar em Java ( https://netbeans.org/ )
2. Criar em Python
3. Criar em FreePascal com o Lazarus ( http://lazarusbrasil.org/ )
4. Criar um programa baseado no Mplayer.

Pode ser que eu não tenha te compreendido corretamente, mas para manipulação de vídeos, uso o Kdenlive e o Cinelerra, ambos são excelentes... Para manipulações mais simples, há o Openshot...

Ninguém é sábio o suficiente que não possa aprender,
nem ignorante o suficiente que não possa ensinar. -- Autor Desconhecido



3. Re: Manipulação de vídeo e programação

Brian Chalega da Silva
brian_ch

(usa Arch Linux)

Enviado em 26/04/2015 - 11:53h

Acho que a parte mais "chata" vai ser a divisão do vídeo, já que não há um jeito seguro de automatizar isso (pelo menos eu não vejo, a não ser que a velocidade do carro tenha permanecido constante por um longo tempo).

Vi na sua descrição que você programa em Fortran, tem alguma outra linguagem que você conheça? Se você já tiver intimidade com alguma, acho que seria mais fácil usar o que você já conhece mesmo. (Não programo em Fortran, mas pelo que eu ouço não seria muito adequado para esse tipo de aplicação).

É difícil pra mim fazer sugestões sobre isso porque eu gosto muito do Lazarus/FreePascal e posso acabar sendo tendencioso mesmo sem querer, mas acho que seria relativamente fácil de criar usando o Lazarus e as bibliotecas do VLC ou do mplayer para efetivamente mostrar o vídeo (mas aí o usuário teria que ter o player do VLC/Mplayer instalado no computador). Essa página resume as opções de bibliotecas para tocar vídeo ou áudio no FreePascal:
http://wiki.freepascal.org/Video_Playback_Libraries

Acho que pra evitar ter de pensar sobre a licença do FFmpeg / Mplayer, seria bom tentar usar a libvlc incluída no FPC 2.7.1, mas é melhor antes fazer um pequeno aplicativo de teste para ter certeza que funciona como o esperado. Se você estiver pensando em distribuir esse software como software livre (mesmo que só o código e não os vídeos), eu poderia dar uma ajuda.

Novamente, não tenho certeza mas ouço que Python é relativamente popular na área de Física, então talvez essa fosse outra opção interessante, só que eu não conheço essa linguagem para poder dizer o quão fácil seria. Não deve ser difícil fazer com Java também, mas aí creio que seria mais interessante se você já tivesse algum conhecimento prévio de Java (pelo menos na minha opinião é um pouco mais complicada).



4. Re: Manipulação de vídeo e programação

Gustavo Valério
GustavoValerio

(usa Debian)

Enviado em 26/04/2015 - 23:00h

brian_ch escreveu:

Acho que a parte mais "chata" vai ser a divisão do vídeo, já que não há um jeito seguro de automatizar isso (pelo menos eu não vejo, a não ser que a velocidade do carro tenha permanecido constante por um longo tempo).

Vi na sua descrição que você programa em Fortran, tem alguma outra linguagem que você conheça? Se você já tiver intimidade com alguma, acho que seria mais fácil usar o que você já conhece mesmo. (Não programo em Fortran, mas pelo que eu ouço não seria muito adequado para esse tipo de aplicação).

É difícil pra mim fazer sugestões sobre isso porque eu gosto muito do Lazarus/FreePascal e posso acabar sendo tendencioso mesmo sem querer, mas acho que seria relativamente fácil de criar usando o Lazarus e as bibliotecas do VLC ou do mplayer para efetivamente mostrar o vídeo (mas aí o usuário teria que ter o player do VLC/Mplayer instalado no computador). Essa página resume as opções de bibliotecas para tocar vídeo ou áudio no FreePascal:
http://wiki.freepascal.org/Video_Playback_Libraries

Acho que pra evitar ter de pensar sobre a licença do FFmpeg / Mplayer, seria bom tentar usar a libvlc incluída no FPC 2.7.1, mas é melhor antes fazer um pequeno aplicativo de teste para ter certeza que funciona como o esperado. Se você estiver pensando em distribuir esse software como software livre (mesmo que só o código e não os vídeos), eu poderia dar uma ajuda.

Novamente, não tenho certeza mas ouço que Python é relativamente popular na área de Física, então talvez essa fosse outra opção interessante, só que eu não conheço essa linguagem para poder dizer o quão fácil seria. Não deve ser difícil fazer com Java também, mas aí creio que seria mais interessante se você já tivesse algum conhecimento prévio de Java (pelo menos na minha opinião é um pouco mais complicada).



Disse o que eu queria dizer e não soube me expressar!
Parabéns!!!

Ninguém é sábio o suficiente que não possa aprender,
nem ignorante o suficiente que não possa ensinar. -- Autor Desconhecido



5. Re: Manipulação de vídeo e programação

William Calixto Pereira
negowill

(usa Fedora)

Enviado em 27/04/2015 - 14:22h

Pois é pessoal!

Uma empresa já vez a gravação do vídeo (tentando manter os 60Km/h), mas sabemos que isto é impossível. Como o maior trecho gravado tem 50Km (num total de 304Km), estou pensando em marca os tempos em que o carro passa pelos marcos quilométricos e nos trechos em que não há marco, tem estacas marcadas na pista (estaqueamento é outra forma de marcar distância e que pode ser convertido em quilometragem). Se souber que tempo de filme corresponde a cada quilometragem, poderei apenas começar o filme do ponto desejado. Isto não deve ser difícil não.

Eu programo em Fortran mas tenho boa noções de C (sou especialista em modelagem matemática computacional), um pouco de conhecimento em Python e no inicio do java cheguei a estudar algumas coisas. Minha praia é mais o paradigma estrutural mas não há problema em fazer este programa usando uma linguagem voltada para objetos.

Na minha limitada idéia, o java ou o python seriam uma boas alternativas para linguagem a ser usada, mas, não tenho certeza.

De qualquer forma, esta semana estarei marcando o tempo em que o filme passa pelas quilometragens.

Os vídeos estão no formato .asf. Gostaria de não precisar convertê-los. Vou tentar neste formato mesmo. Agora, que player posso usar e como fazer uma chamada para que o filme comece de determinado ponto?

Obrigado pela ajuda que vocês estão me dando, GustavoValerio e brian_ch!










6. Re: Manipulação de vídeo e programação

Brian Chalega da Silva
brian_ch

(usa Arch Linux)

Enviado em 27/04/2015 - 22:06h

Acho que você poderia fazer algo desse tipo:

Criar uma estrutura de diretórios mais ou menos como essa:

|-- Rodovias
| |-- BR-Exemplo1
| | |-- BR-Exemplo1.txt
| | |-- Trecho1.asf
| | |-- Trecho2.asf
| | |-- Trecho3.asf
| |-- BR-Exemplo2
| | |-- BR-Exemplo2.txt
| | |-- Trecho1.asf
| | |-- Trecho2.asf
| | |-- Trecho3.asf

Com um diretório para cada rodovia, e dentro deles colocar os vídeos e um .txt com as informações necessárias para a reprodução, esse txt poderia ser mais ou menos assim:

BR ABCD
1 BR-ABCD_1.ASF 0
2 BR-ABCD_1.ASF 3600
3 BR-ABCD_1.ASF 8000
4 BR-ABCD_2.ASF 0

Ou seja:

[Nome_da_estrada]
[Kilometragem] [Nome_do_arquivo_que_contem_essa_kilometragem] [Tempo_em_que_começa(Em milissegundos)]


Mas é só uma sugestão, não parei pra refletir por muito tempo se esse seria mesmo o melhor método ou não.

Para a programação, se você tiver intimidade com C poderia fazer nessa linguagem mesmo, usando por exemplo o GTK para criar a interface gráfica. Em Python também seria possível criar a GUI usando GTK, aliás, aqui tem um exemplo (bem básico) de como usar a libvlc para tocar um vídeo numa janela GTK (ele inclusive toca dois vídeos lado a lado! Fizeram pensando em você rsrs :
http://git.videolan.org/?p=vlc/bindings/python.git;a=blob;f=examples/gtkvlc.py;h=ee497a6fd9ba0dbdf98...

E aqui tem um exemplo em C:
http://git.videolan.org/?p=vlc.git;a=blob;f=doc/libvlc/gtk_player.c

(Para ambos é preciso ter os headers da libvlc e do gtk).

Eu poderia tentar fazer uma versão básica em FreePascal (deve ser bem simples contanto que a tradução do header da libvlc esteja estável) mas não adiantaria muito se não tiver ninguém aí que conheça essa linguagem pra poder ajustar ao que vocês precisam, e dar manutenção.


7. Re: Manipulação de vídeo e programação

William Calixto Pereira
negowill

(usa Fedora)

Enviado em 28/04/2015 - 07:57h

brian_ch escreveu:

Acho que você poderia fazer algo desse tipo:

Criar uma estrutura de diretórios mais ou menos como essa:

|-- Rodovias
| |-- BR-Exemplo1
| | |-- BR-Exemplo1.txt
| | |-- Trecho1.asf
| | |-- Trecho2.asf
| | |-- Trecho3.asf
| |-- BR-Exemplo2
| | |-- BR-Exemplo2.txt
| | |-- Trecho1.asf
| | |-- Trecho2.asf
| | |-- Trecho3.asf

Com um diretório para cada rodovia, e dentro deles colocar os vídeos e um .txt com as informações necessárias para a reprodução, esse txt poderia ser mais ou menos assim:

BR ABCD
1 BR-ABCD_1.ASF 0
2 BR-ABCD_1.ASF 3600
3 BR-ABCD_1.ASF 8000
4 BR-ABCD_2.ASF 0

Ou seja:

[Nome_da_estrada]
[Kilometragem] [Nome_do_arquivo_que_contem_essa_kilometragem] [Tempo_em_que_começa(Em milissegundos)]


Mas é só uma sugestão, não parei pra refletir por muito tempo se esse seria mesmo o melhor método ou não.

Para a programação, se você tiver intimidade com C poderia fazer nessa linguagem mesmo, usando por exemplo o GTK para criar a interface gráfica. Em Python também seria possível criar a GUI usando GTK, aliás, aqui tem um exemplo (bem básico) de como usar a libvlc para tocar um vídeo numa janela GTK (ele inclusive toca dois vídeos lado a lado! Fizeram pensando em você rsrs :
http://git.videolan.org/?p=vlc/bindings/python.git;a=blob;f=examples/gtkvlc.py;h=ee497a6fd9ba0dbdf98...

E aqui tem um exemplo em C:
http://git.videolan.org/?p=vlc.git;a=blob;f=doc/libvlc/gtk_player.c

(Para ambos é preciso ter os headers da libvlc e do gtk).

Eu poderia tentar fazer uma versão básica em FreePascal (deve ser bem simples contanto que a tradução do header da libvlc esteja estável) mas não adiantaria muito se não tiver ninguém aí que conheça essa linguagem pra poder ajustar ao que vocês precisam, e dar manutenção.


É isto mesmo que já estou fazendo. Quando eu tiver feito isto com um trecho, postarei aqui como ficou e aí partirei para outra etapa.
Quanto a usar GTK, já li alguma coisa. Minha dúvida: É possível usa-lo tanto na plataforma linux quanto no windows? Porque eu uso e vou pra campo com um notebook também com o fedora, mas meus superiores, que também precisam acessar o programa, usam windows. Aí tenho que rodar nas duas plataformas.

Daqui até sexta prepararei os arquivos e aí já terei pensado bastante sobre que linguagem usar para que seja portável as plataformas.

Obrigado!





8. Re: Manipulação de vídeo e programação

Brian Chalega da Silva
brian_ch

(usa Arch Linux)

Enviado em 28/04/2015 - 19:17h

negowill escreveu:
Quanto a usar GTK, já li alguma coisa. Minha dúvida: É possível usa-lo tanto na plataforma linux quanto no windows? Porque eu uso e vou pra campo com um notebook também com o fedora, mas meus superiores, que também precisam acessar o programa, usam windows. Aí tenho que rodar nas duas plataformas.


Eu nunca mexi com GTK mas pelo que sei e pelo que diz a documentação ele é multiplataforma sim:
http://www.gtk.org/features.php">http://www.gtk.org/features.php (só fiquei meio surpreso em ver que os pacotes de Windows 64 bits ainda são experimentais)

Além do GTK eu tinha esquecido de mencionar o QT (porque tinha ficado com C na cabeça e acho que não dá pra usar com C puro), mas daria pra fazer com Python e QT também. Ela também é multiplataforma, e (pelo que eu vi) tanto o GTK quanto o QT estão disponíveis sob a LGPL:
http://www.gtk.org/ (Parte: "Are there any licensing restrictions?")
https://www.qt.io/licensing/

Pra qualquer das duas imagino que você teria que fazer um instalador de modo que as bibliotecas sejam distribuídas junto com o programa.

Resumindo: Tem muitas opções :) Mas acho que é interessante ficar no mais "tradicional" (QT/GTK) porque é mais fácil encontrar tutoriais/exemplos além de pessoal que tenha conhecimento sobre a biblioteca.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts