Blue velvet: mudanças entre as edições
De Pontão Nós Digitais
Ir para navegaçãoIr para pesquisar
(Atualização relativa à Semana 5 de desenvolvimento) |
|||
Linha 45: | Linha 45: | ||
<li>Geração de XML com vários áudios na timeline. - '''FEITO - S4'''. | <li>Geração de XML com vários áudios na timeline. - '''FEITO - S4'''. | ||
<li>Geração de XML com vários áudios na timeline e várias mudanças de parâmetros relativos a áudio (bloqueio de trilhas, mute etc). - '''FEITO - S4'''. [http://youtu.be/mKGhPkCSCzQ Vídeo demonstrativo] | <li>Geração de XML com vários áudios na timeline e várias mudanças de parâmetros relativos a áudio (bloqueio de trilhas, mute etc). - '''FEITO - S4'''. [http://youtu.be/mKGhPkCSCzQ Vídeo demonstrativo] | ||
<li>Pesquisa - qual o melhor jeito de se usar o FFMPEG nativo do Blender em vários ambientes? | <li>Pesquisa - qual o melhor jeito de se usar o FFMPEG nativo do Blender em vários ambientes? - '''FEITO - S5'''. | ||
<li>Extrair áudio de vídeos via Blender API (Python). | <li>Extrair áudio de vídeos via Blender API (Python). | ||
<li>Geração de XML a partir de timeline com áudios misturados - fontes são vídeos e áudios; | <li>Geração de XML a partir de timeline com áudios misturados - fontes são vídeos e áudios; | ||
<li>Adicionar funcionalidades de interface (UI) - item no menu; | <li>Adicionar funcionalidades de interface (UI) - item no menu; - '''FEITO - S5'''. | ||
<li>Adicionar funcionalidades de interface (UI) - diálogos de aviso para conversão do FFMPEG; | <li>Adicionar funcionalidades de interface (UI) - diálogos de aviso para conversão do FFMPEG; | ||
<li>Teste de funcionalidade - usar o plugin em um projeto real de edição; | <li>Teste de funcionalidade - usar o plugin em um projeto real de edição; | ||
Linha 159: | Linha 159: | ||
* Apenas as relacionadas ao uso multiplataforma do '''::blue_velvet::'''. | * Apenas as relacionadas ao uso multiplataforma do '''::blue_velvet::'''. | ||
==Semana 5== | |||
* Semana dedicada a pesquisas sobre como implementar o FFMPEG e os menus no Blender; | |||
* Pesquisa sobre reconhecimento de sistemas operacionais e de diferenças entre eles, no que se refere à utilização do plugin; | |||
* Pesquisa sobre como chamar um FFMPEG local, não instalado, em máquinas Windows; | |||
* Transformação da função principal do plugin (ExportArdour) em classe, para ser lida como addon pelo Blender - essa é uma atualização grande porque muda a estrutura do código; | |||
* Mapeamento e correção de bugs referentes a essa transformação - tive de inserir duas variáveis globais no código para isso, o que não me deixou muito feliz. É possível que eu incorpore a função de gerar XML à classe para não ter que declarar essas variáveis globais. A classe também é de onde sairá o chamado para o FFMPEG. | |||
'''A fazer, semana que vem''' | |||
* Continuar depuração da Classe: como deixar o usuário chamar um FFMPEG local? | |||
* Se possível, implementar o FFMPEG | |||
'''Dúvidas''' | |||
* Dúvidas relacionadas a classes e funções - como mudar o valor de self.path? Como permitir a escolha de uma segunda pasta além da primeira? Qual a melhor forma de implementar o FFMPEG levando isso em consideração? |
Edição das 15h37min de 16 de outubro de 2013
::blue_velvet::
Página de desenvolvimento do plugin ::blue_velvet::, para integração entre as timelines de áudio do Blender e do Ardour.
Onde está o código?
Aqui: https://github.com/szaszak/blender_velvet/blob/blue_velvet/blue_velvet.py
Vídeo explicativo
Explique-me como se eu fosse um editor de vídeo, e não um desenvolvedor: veja o vídeo demonstrativo no YouTube.
O que esperar?
Workflow de trabalho:
- Editor faz a montagem completa do vídeo.
- Addon reconhece as trilhas usadas na timeline e:
- Checa se as trilhas pertencem a um vídeo ou se são áudios separados;
- a. Se trilha pertence a um vídeo, usa o FFMPEG do Blender para isolar a trilha de áudio (WAV) e as salva em uma pasta "Audio (Bundle)", onde será lida pelo Ardour;
- b. Se trilha for áudio separado, copia esse áudio para uma pasta "Audio (Bundle)", onde será lida pelo Ardour;
- Gera XML .ardour;
- Checa se as trilhas pertencem a um vídeo ou se são áudios separados;
- Designer de som abre o arquivo .ardour no Ardour;
- Ardour completa itens faltantes do XML-base (automático);
- Ardour cria visualização de "peaks" a partir do XML-base (automático);
- Designer de áudio reabre a mesma sessão, e a timeline de áudio é a mesma vista pelo montador no Blender.
- Mixagem e masterização do áudio.
- Designer de som exporta trilhas finais.
- Montador insere trilha final no projeto de edição.
Programação de desenvolvimento
- Estudo de funcionamento geral das coisas - Blender, Ardour, geração de XML pelo Ardour, geração de XML via Python - FEITO - S1.
- Qual é o XML mínimo possível que o Ardour abre? - FEITO - S2.
- Onde estão as coisas relativas a áudio (pan, mono/estéreo, trilhas bloqueadas, trilhas mutadas) no Blender e no XML? - FEITO - S3.
- Geração de um XML esqueletal básico por Python via Blender, que leia conteúdo estático e o transforme em um XML. - FEITO - S3.
- Pesquisa: abrir track paralelo de desenvolvimento no github do blender_velvet. - FEITO - S2. Link ::blue_velvet::.
- Geração de XML com vários áudios na timeline. - FEITO - S4.
- Geração de XML com vários áudios na timeline e várias mudanças de parâmetros relativos a áudio (bloqueio de trilhas, mute etc). - FEITO - S4. Vídeo demonstrativo
- Pesquisa - qual o melhor jeito de se usar o FFMPEG nativo do Blender em vários ambientes? - FEITO - S5.
- Extrair áudio de vídeos via Blender API (Python).
- Geração de XML a partir de timeline com áudios misturados - fontes são vídeos e áudios;
- Adicionar funcionalidades de interface (UI) - item no menu; - FEITO - S5.
- Adicionar funcionalidades de interface (UI) - diálogos de aviso para conversão do FFMPEG;
- Teste de funcionalidade - usar o plugin em um projeto real de edição;
- Documentação - geração de vídeo explicativo + README no github.
- Pós-documentação - contato com desenvolvedores do Blender, publicação no blenderartists.org;
- Avaliação - é possível ler keyframes de fade/pan e volume variável via Blender API?
- Adaptação do código segundo sugestões do blenderartists.org.
- Inserir ::blue_velvet:: nos addons do Blender (branch community contrib).
Relatórios de desenvolvimento
Relatórios semanais publicados na quarta-feira.
Semana 1
- Instalei o Ardour 2 no lap reciclado para começo das pesquisas.
- Com o Ardour 2 e Jack rodando, salvei algumas sessões de Ardour sem trilhas e com uma trilha de áudio. Objetivo: entender o XML.
- Estudei qual o melhor modo de implementar a exportação da timeline do Blender por XML. A melhor opção seria o lxml, mas essa é uma biblioteca externa. O Blender tem suporte nativo a MiniDom e ao ElementTree, então serão esses os métodos escolhidos.
- Estudei como gerar um XML do zero com Python. A alternativa seria modificar um template XML do Ardour vazio, mas seria ruim distribuir isso junto com o addon.
- Estudei como transformar o output XML do Blender de bytes em string e em como deixá-lo em formato human-readable (pretty printing).
A fazer, semana que vem
- O XML do Ardour é cheio de tags e IDs. Muitas IDs não querem dizer nada, mas outras são marcadores internos referentes ao modo que as fontes ficam dispostas na timeline. Preciso entender melhor isso.
- Trabalhar na geração de um primeiro XML esqueletal, com as seções de um XML do Ardor;
- Estudar melhor o Ardour, para entender como ele lida com fontes estéreo, mono ou multicanais, e como faz as pans desses áudios.
Dúvidas
- Quais IDs do XML são realmente importantes?
- Como o Ardour lida com fontes de diferentes canais?
- Quais as diferenças entre XMLs para Ardour 2 e Ardour 3?
Semana 2
- Baixei o Ardour3 para já codar usando a versão nova do programa e do XML;
- Pesquisei sobre os IDs na XML - eles não importam. Os únicos que importam são o de contagem geral (id-counter) e os que se referenciam entre si na timeline, relacionados a sources de áudio;
- Início da leitura do manual do Ardour, para compreender melhor a relação programa <-> XML;
- Criação de página no wiki Nós Digitais e documentação de desenvolvimento - atualizações serão às quartas-feiras;
- Cheguei ao XML esqueletal básico, sem trilhas. Ele tem 32 linhas;
- Uma trilha de áudio adiciona 4 elementos novos no XML, fazendo com que fique com 53 linhas;
- Início de código: ::blue_velvet:: agora é capaz de gerar o XML básico a partir do Blender (Python) e salvar em um arquivo;
- Código do ::blue_velvet:: está no github, como um branch do main trunk, blender_velvet. Agora o desenvolvimento pode ser acompanhado a partir dos commits.
A fazer, semana que vem
- Testar se XML esqueletal é lido pelo Ardour3 (os atributos do XML são gerados em ordem diferente ao original);
- Trabalhar na geração de um XML com uma trilha, e testar se ela é lida pelo Ardour3.
- Continuar leitura do manual do Ardour.
Dúvidas
- XML não funciona no Ardour sem informações de Tempo e Meter. Há outro jeito ou isso é fundamental?
- Elemento Location: o que são as flags? Por que existe um elemento "punch"? XML funcionaria sem ele?
Semana 3
- XML mais objetivo: limpei referências a Punch e Loop -> Ardour os recria automaticamente;
- XML mais preciso: incluí informações referentes a SampleFormat (bits) e FPSs aceitos pelo Ardour - não usar esses parâmetros no Blender pode gerar um erro;
- Teste com trilha única estática criada pelo Blender funciona no Ardour;
- Comecei preparativos para conteúdo dinâmico (timeline do Blender);
- Extensa pesquisa sobre a relação dos parâmetros do XML do Ardour e dos elementos do Blender - consegui estabelecer relações bem-sucedidas entre ambos para praticamente todos os parâmetros que importam;
- Revisão de código: transformei todas as declarações de atributos do XML em funções, para receberem conteúdo dinâmico;
- Problema da numeração de IDs resolvido - IDs agora estão sendo atribuídos corretamente, inclusive relações internas no XML;
- Quebrei a geração das seções dinâmicas do XML em várias funções, para tornar o código mais claro;
- Revisão geral e limpeza do código - excluí temporariamente parte do código no github para refletir estado atual da revisão;
- Primeira seção do XML gerada a partir de conteúdo dinâmico parcialmente bem sucedida.
A fazer, semana que vem
- Continuar revisão de código para receber conteúdo dinâmico;
- Resolver problemas de inter-relação entre Sources e Regions para conteúdos dinâmicos repetidos.
Dúvidas
- Informações de dados das strips estão sendo armazenadas em dicionários, dentro de uma lista. Seria melhor criar uma classe?
Semana 4
- Fim da revisão e adaptação de código para conteúdo dinâmico - código voltou a ficar integral no GitHub;
- Correção de bugs na geração das Sources no XML do Ardour;
- Correção de bugs na geração de Playlist Regions no XML do Ardour;
- Exclusão da seção Regions no código do ::blue_velvet:: - a seção é recriada automaticamente pelo Ardour a partir das Playlist Regions;
- Correção de bugs relativa à geração interna de IDs no XML do Ardour;
- Geração da primeira timeline de Ardour a partir de conteúdo dinâmico: este ponto significa o marco de 1/3 do desenvolvimento alcançado. Agora é possível gerar timelines de Ardour a partir de trilhas de áudio vindas do Blender (falta fazer funcionar com áudios que estão em trilhas de vídeo);
- Limpeza de código e correção do modo como a ordem as trilhas aparecem no Ardour - agora, as trilhas aparecem na mesma ordem que na timeline do Blender;
- Correção de bug na ordem das trilhas para quando há mais de 10 tracks na timeline;
- Publicação de vídeo de documentação - agora o funcionamento do plugin pode ser compreendido por "pessoas comuns". Link do vídeo no YouTube
- Contato inicial na lista da Blender Foundation - Python Development sobre o ::velvet_goldmine::. A ideia é saber como se faz para o plugin ser parte da distribuição contrib do Blender;
- Contato com 3pointEdit, do blog Blender VSE, sobre o o ::velvet_goldmine:: e o ::blue_velvet::. A ideia é que ele veja os plugins e dê algum feedback a respeito.
A fazer, semana que vem
- Pesquisa sobre o FFMPEG - como usar o FFMPEG a partir do Blender;
- Pesquisa sobre menus - como inserir itens de menus no Blender para chamar o plugin;
- Pesquisa sobre multiplataforma - quais são as diferenças entre Linux e Windows, ou seja, como fazer o plugin rodar tanto para quem tem Linux como para quem tem Windows (devido ao FFMPEG).
Dúvidas
- Apenas as relacionadas ao uso multiplataforma do ::blue_velvet::.
Semana 5
- Semana dedicada a pesquisas sobre como implementar o FFMPEG e os menus no Blender;
- Pesquisa sobre reconhecimento de sistemas operacionais e de diferenças entre eles, no que se refere à utilização do plugin;
- Pesquisa sobre como chamar um FFMPEG local, não instalado, em máquinas Windows;
- Transformação da função principal do plugin (ExportArdour) em classe, para ser lida como addon pelo Blender - essa é uma atualização grande porque muda a estrutura do código;
- Mapeamento e correção de bugs referentes a essa transformação - tive de inserir duas variáveis globais no código para isso, o que não me deixou muito feliz. É possível que eu incorpore a função de gerar XML à classe para não ter que declarar essas variáveis globais. A classe também é de onde sairá o chamado para o FFMPEG.
A fazer, semana que vem
- Continuar depuração da Classe: como deixar o usuário chamar um FFMPEG local?
- Se possível, implementar o FFMPEG
Dúvidas
- Dúvidas relacionadas a classes e funções - como mudar o valor de self.path? Como permitir a escolha de uma segunda pasta além da primeira? Qual a melhor forma de implementar o FFMPEG levando isso em consideração?