You are on page 1of 36

Universidade Federal do Rio de Janeiro Escola Politcnica Curso de Redes e Vdeo IP (RV IP)

Avaliao de Sincronismo de Stream de udio e Vdeo

Autor: _________________________________________________ Eng. Luiz Fausto de Souza Brito Orientador UFRJ: _________________________________________________ Prof. Sergio Barbosa Villas-Boas, Ph.D. Orientador GLOBO: _________________________________________________ Eng. Luiz Carlos Abrahao Examinador: _________________________________________________ Prof. Edilberto Strauss, Ph.D.

RV-IP Dezembro de 2009

AGRADECIMENTO

A Deus, verdadeira fonte de toda sabedoria. minha esposa, por todo suporte que me concede. Aos meus pais, pela educao que me deram. TV Globo, por financiar esse curso, em particular pelos meus gestores que me confiaram essa oportunidade. UFRJ pelo comprometimento com a educao, em particular pela dedicada equipe desse curso. Ao meu orientador na TV Globo e ao meu orientador na UFRJ, pela generosidade em aceitarem assumir a orientao desse trabalho. Ao Ricardo Fontenelle, pesquisador da TV Globo, pela sua disponibilidade e capacidade tcnica para discutir solues para os problemas tecnolgicos do nosso dia-a-dia, assim como para o problema desse projeto em particular. Ao engenheiro Ricardo Jos, pela disponibilidade em revisar este texto. Ao povo brasileiro, pela contribuio na minha educao. A todos que, de alguma forma, me ajudaram a chegar at aqui, o meu muito obrigado.

ii

RESUMO

Falta de sincronismo entre udio e vdeo um problema com muitas causas e poucas solues disponveis, particularmente para a avaliao de sistemas de transmisso por streaming. Uma metodologia simples, utilizando um sinal de teste resistente s perdas provocadas por diferentes tipos de compresso, pode ser uma soluo efetiva para esse tipo de avaliao objetiva, como demonstrado neste trabalho. Palavras-Chave: Sincronismo, udio, Vdeo, Streaming.

iii

Sumrio
Captulo 1 Introduo ................................................................................................. 1 1.1 - 1.2 - 1.3 - 1.4 - 1.5 - 1.6 - Tema .................................................................................................................. 1 Delimitao ....................................................................................................... 1 Justificativa........................................................................................................ 2 Objetivos ........................................................................................................... 2 Metodologia....................................................................................................... 2 Descrio ........................................................................................................... 3

Captulo 2 Medio de Sincronismo em Banda Base ............................................... 4 2.1 - 2.2 - 2.3 - 2.4 - 2.5 - 2.6 - 2.7 - 2.8 - 2.9 - Fontes de problemas .......................................................................................... 4 Tolerncia de Sincronismo ................................................................................ 5 Avaliao Subjetiva........................................................................................... 5 Medio usando contadores .............................................................................. 6 Medio usando transies rpidas ................................................................... 6 Medio usando contadores e transies rpidas .............................................. 6 Medio usando "marca d'gua" ....................................................................... 7 Medio usando movimento labial.................................................................... 7 Dificuldades da aplicao a diferentes tipos de compresso............................. 7

Captulo 3 Medio de Sincronismo em Streams ..................................................... 8 3.1 - Suportando diferentes compresses .................................................................. 8 3.2 - Plataforma de Desenvolvimento e Testes........................................................ 10 3.3 - Aplicativos Desenvolvidos.............................................................................. 10 3.3.1 - AVSyncGen.............................................................................................. 11 3.3.2 - AVSyncRead ............................................................................................ 12 3.3.3 - AVSyncAdjust.......................................................................................... 12 Captulo 4 Resultados Experimentais ...................................................................... 14 4.1 - Teste 1: AVSyncGen + AVSyncRead............................................................. 14 4.2 - Teste 2: AVSyncGen + AVSyncAdjust + AVSyncRead................................ 14 4.3 - Teste 3: AVSyncGen + QuickTime Player + Screenium + AVSyncRead...... 15 4.4 - Teste 4: AVSyncGen + AVSyncAdjust + QuickTime Player + Screenium + AVSyncRead .............................................................................................................. 16 4.5 - Teste 5: AVSyncGen + Darwin Streaming Server + QuickTime Player + Screenium + AVSyncRead ......................................................................................... 16 4.6 - Teste 6: AVSyncGen + AVSyncAdjust + Darwin Streaming Server + QuickTime Player + Screenium + AVSyncRead ....................................................... 17 Captulo 5 Concluso e Trabalhos Futuros............................................................. 18 5.1 - Concluso ........................................................................................................ 18 5.2 - Trabalhos Futuros............................................................................................ 19 iv

Bibliografia .................................................................................................................... 20 Apndice 1 Cdigo Fonte .......................................................................................... 21 /Applications/AVSyncGen.app/Contents/Resources/Scripts/main.scpt..................... 21 /Applications/AVSyncGen.app/Contents/Resources/AVSyncGen.sce ...................... 23 /Applications/AVSyncRead.app/Contents/Resources/Scripts/main.scpt ................... 25 /Applications/AVSyncRead.app/Contents/Resources/AVSyncRead.sce................... 27 /Applications/AVSyncAdjust.app/Contents/Resources/Scripts/main.scpt................. 29

Captulo 1 Introduo
1.1 - Tema
O presente trabalho prope uma metodologia para avaliar o sincronismo entre udio e vdeo em um stream. A justificativa do problema envolve um pouco de teoria de processamento e streaming de udio e vdeo, e a soluo proposta ser desenvolvida em software.

1.2 - Delimitao
Este trabalho contempla a avaliao de sincronismo relativo (latncia) entre udio e vdeo em um stream atravs da transmisso de um sinal teste. No atende avaliao de sincronismo entre udio e vdeo de um sinal qualquer sendo transmitido. No garante, portanto, que outro sinal audiovisual transmitido tenha a mesma relao de sincronismo, pois esta pode variar na fonte do sinal. Em diferentes sistemas de reproduo tambm podero existir diferenas decorrentes, por exemplo, de algum eventual processamento anterior exibio. A correo das eventuais diferenas de sincronismo medidas tambm no considerada neste trabalho.

1.3 - Justificativa
Por diversas razes udio e vdeo podem perder sincronismo em uma transmisso, seja por processamentos com latncias diferenciadas seja por diferenas nas respectivas cadeias de distribuio. Na transmisso convencional de televiso este um problema que pode causar muito incmodo ao espectador, porm existem algumas solues comerciais para avaliao objetiva de eventuais problemas. Na transmisso pela internet, pela multiplicidade de opes e sistemas utilizados, no existem ferramentas disponveis para essa avaliao objetiva e a avaliao subjetiva dificultada pela qualidade em geral inferior do vdeo. Alm disso, existem mais variveis envolvidas no sistema que podem gerar problemas de sincronismo, como o processo de codificao, o transporte pela rede e o processo de decodificao. Embora se considere que o espectador desse tipo de mdia mais tolerante a problemas de qualidade em geral, essa uma situao que est sendo modificada pela crescente disponibilidade de banda de internet para o usurio final no ambiente domstico.

1.4 - Objetivos
Pretende-se neste trabalho desenvolver uma ferramenta, capaz de avaliar eventuais diferenas de sincronismo entre udio e vdeo, que se aplique a sistemas de distribuio pela internet, independente das caractersticas particulares do sistema escolhido, tais como protocolos, codecs, hardwares e softwares.

1.5 - Metodologia
Por analogia aos sistemas de avaliao equivalentes disponveis para udio e vdeo em banda base, prope-se uma variao aplicvel a sistemas com diferentes tipos de compresso e interface diferenciada, no caso um computador. Sero ainda apresentados os resultados de testes prticos realizados utilizando a ferramenta desenvolvida.

1.6 - Descrio
No captulo 2 apresentada uma breve explicao sobre os problemas de sincronismo e alguns sistemas de avaliao disponveis para udio e vdeo em banda base, alm da dificuldade de aplic-los a sistemas de distribuio pela internet com diferentes tipos de compresso. O captulo 3 apresenta o desenvolvimento de ferramentas, baseadas em uma nova proposta metodolgica de avaliao de sincronismo, que se adequem s caractersticas dos sistemas de interesse, no caso sistemas de streaming. Os resultados de testes prticos realizados com as ferramentas desenvolvidas so apresentados no captulo 4. No captulo 5 so apresentadas as concluses e propostas de trabalhos futuros.

Captulo 2 Medio de Sincronismo em Banda Base


2.1 - Fontes de problemas
A cadeia de transmisso de um sinal audiovisual , em geral, um sistema complexo, com muitos componentes envolvidos. Muitos desses componentes realizam processamento digital de udio e/ou vdeo, o que geralmente impe uma certa latncia ao sinal processado. Alm disso, por vezes, tanto em sistemas digitais quanto analgicos, dispositivos de gravao ou a transmisso de sinais a longas distncias tambm podem impor latncia ao udio e ao vdeo. Se houver diferena na latncia resultante do processamento, gravao ou transmisso do udio e do vdeo, o sincronismo entre os dois prejudicado.

2.2 - Tolerncia de Sincronismo


Embora pequenas diferenas de sincronismo entre udio e vdeo possam ser imperceptveis para o espectador, em situaes mais extremas, e dependendo do tipo de programa, a falta de sincronismo pode se tornar incmoda. Embora esse limiar esteja sujeito a uma certa variabilidade na percepo individual, a ATSC1 estabelece [1], especificamente para a aplicao em TV Digital, que o udio no pode estar adiantado mais de 15 ms nem atrasado mais de 45 ms em relao ao vdeo na entrada do codificador. Na sada do decodificador poder ser acrescentado um erro de sincronismo de at 15 ms entre udio e vdeo, em qualquer direo. Ou seja, a latncia total do udio em relao ao vdeo no sistema deve estar limitada entre -30 ms e +60 ms. Entretanto, a ATSC no menciona como realizar essa medio. No existem padres abertos para avaliao objetiva, embora existam opes comerciais atravs de alguns fabricantes, cada um com sua tecnologia proprietria. Enquanto isso, a avaliao subjetiva ainda muito empregada. A seguir ser apresentada uma anlise das opes disponveis.

2.3 - Avaliao Subjetiva


Na falta de um medidor objetivo, por qualquer motivo que seja, a alternativa a avaliao subjetiva. Pode ser feita atravs de sinais de teste, ou filmando algum falando para teste diante de uma cmera, ou at diretamente com o sinal audiovisual a ser transmitido. Um avaliador treinado e experiente pode ser capaz de "acertar" o sincronismo para um padro aceitvel, atravs de tentativa e erro, embora esse tipo de teste seja lento e esteja sujeito s variabilidades da percepo individual, cuja preciso tambm afetada pelo tipo de sinal audiovisual utilizado para a anlise.
1

ATSC: Comit de Sistemas Avanados de Televiso (Advanced Television Systems Committee), grupo que estabeleceu os padres de Televiso Digital dos Estados Unidos da Amrica.

2.4 - Medio usando contadores


Uma das tcnicas utilizadas para avaliar diferenas de sincronismo entre udio e vdeo consiste em injetar, no sistema sob teste, sinais nos quais so inseridos contadores, codificados na imagem e no som, que possam ser decodificados e comparados na sada do sistema.2

2.5 - Medio usando transies rpidas


Outra tcnica de medio envolve a utilizao sinais de teste que contenham transies rpidas na imagem e no som, cujos instantes de reproduo podem ser comparados na sada do sistema sob teste.3

2.6 - Medio usando contadores e transies rpidas


As duas tcnicas anteriormente citadas podem ser combinadas. Neste caso um dos sinais (udio ou vdeo) contm um contador enquanto o outro contm transies rpidas. Na sada do sistema sob teste o instante da transio rpida comparado com o valor do contador neste mesmo instante. [2]
2

Dois sistemas experimentais utilizando essa tcnica foram desenvolvidos pelo Departamento de Manuteno da TV Globo Rio, um utilizando time-code, VTs e um waveform (pelo Engenheiro Helio Eufrauzino), e outro com o desenvolvimento de um equipamento com um sistema de contagem proprietrio (pelo Pesquisador Ricardo Fontenelle). 3 Dois sistemas testados pelo Departamento de Manuteno da TV Globo Rio utilizavam essa tcnica: o Pro-Bel HD Valid8 utiliza color-bars com tom, piscando um quadro em black sncrono com mute no udio; o Tektronix TG700 possui um sinal de teste para uso em conjunto com o WFM7120 (com opcional AV Delay) utiliza black no vdeo e mute no udio, piscando um quadro de vdeo qualquer sncrono com um tom no udio.

2.7 - Medio usando "marca d'gua"


Um produto [4], j descontinuado por falta de sucesso comercial, utilizava uma tcnica interessante para verificar problemas de sincronismo na distribuio de um sinal audiovisual. Na ponta da gerao de um enlace a ser verificado, em que se supe que o sincronismo esteja correto, um equipamento inclui no vdeo uma "marca d'gua", ou seja, um sinal praticamente invisvel que corresponde ao envelope da forma de onda do udio correspondente. Na ponta da recepo do enlace, outro equipamento extrai essa "marca d'gua" do vdeo e compara com o envelope do udio recebido, podendo com isso calcular a latncia. Os detalhes da implementao dessa "marca d'gua" no foram divulgados pelo fabricante.

2.8 - Medio usando movimento labial


Uma idia aparentemente atrativa a medio objetiva do sincronismo atravs do reconhecimento dos movimentos labiais e dos fonemas correspondentes [3], porque poderia ser aplicada sem necessidade de um sinal de teste especfico e eventualmente at para verificao do sistema em tempo real durante uma transmisso. Porm trata-se de um processamento muito complexo (e por isso mesmo de maior custo), e cuja eficcia dependente da boa visibilidade do movimento labial e da qualidade do udio. Essas condies no so facilmente atendidas em qualquer tipo de programa.

2.9 - Dificuldades da aplicao a diferentes tipos de compresso


Alguns fabricantes alegam que seus sinais de teste suportam sofrer algum tipo de processamento ou perda de qualidade, porm h limites. Sinais de teste que utilizam contadores, transies rpidas, "marca d'gua" ou deteco de movimento labial podem ter sua decodificao ou interpretao seriamente dificultados por sistemas que envolvam diferentes tipos de compresso, como o caso de streaming pela internet. As modificaes espaciais e temporais no vdeo causadas pela mudanas na resoluo, na relao de aspecto e na taxa de quadros por segundo e a limitao de banda do udio, alm da degradao introduzida tanto no vdeo quanto no udio pelo processo de codificao e decodificao, em geral inviabilizam o reconhecimento dos padres utilizados para avaliao de sincronismo nas tcnicas mencionadas neste captulo. 7

Captulo 3 Medio de Sincronismo em Streams


3.1 - Suportando diferentes compresses
Em todos os sistemas que utilizam sinais de teste para a avaliao de sincronismo entre udio e vdeo (com contadores, transio rpida ou combinao dos dois) trata-se de um sinal peridico, cujo perodo limita a faixa de erro de sincronismo detectvel. Por exemplo, admitindo que o udio possa estar adiantado ou atrasado em at quatro segundos em relao ao vdeo o perodo do sinal de teste deve ser igual ou superior a oito segundos. Tambm necessrio poder extrair sinais de sincronismo unidimensionais do udio e do vdeo (o vdeo um sinal bidimensional enquanto o udio um sinal unidimensional) que possam utilizar diferentes taxas de amostragem, como o caso de vdeo (em geral igual ou inferior a 30 quadros por segundo) e udio (em geral igual ou inferior a 48000 amostras por segundo). Alm disso, para suportar especificamente diferentes tipos de compresso de udio e vdeo, necessrio garantir que o sinal de teste seja o mais simples possvel do ponto de vista da representao do sinal comprimido, para minimizar problemas com eventuais perdas de compresso. Um dos sinais peridicos mais simples que se pode imaginar (ao menos do ponto de vista da representao no domnio da frequncia) uma senide. O passo seguinte encontrar uma forma conveniente de transportar uma senide de frequncia muito baixa (por exemplo, 1/8 Hz) no vdeo e no udio.

A compresso de um sinal de vdeo pode ser feita em dois domnios: espacial e temporal. Quanto ao domnio espacial o sinal mais simples para ser codificado aquele que possui todos os pixels iguais. Isso tambm simplifica a anlise do vdeo, j que bastaria analisar um nico pixel qualquer, e j o reduz de bidimensional a unidimensional. Ainda melhor, para a representao codificada, se o sinal de vdeo no contiver cores, j que em geral so alocados mais bits para a codificao de luminncia do que para a crominncia. Quanto ao domnio temporal, um sinal com transies lentas (acompanhando uma senide de baixa frequncia) mais simples de codificar que um vdeo com transies rpidas. Mesmo com uma taxa de quadros por segundo muito baixa (e.g. 10 quadros por segundo), como o que pode acontecer nos vdeos para internet, essa amostragem ainda estar muito acima do dobro da frequncia da frequncia da senide (e.g. 1/8 Hz), portanto o sinal de teste estar sempre suficientemente amostrado para sua perfeita recuperao. O sinal de vdeo, pode ser portanto, uma variao senoidal da luminncia (com um offset constante, j que no existe luminncia negativa). A compresso de udio pode envolver filtros passa-altas e passa-baixas. Na pior das hipteses, pode-se supor uma filtragem equivalente telefnica (aproximadamente de 300 Hz a 3 kHz). Alm disso, devido filtragem psicoacstica do mascaramento, requantizao do sinal no domnio da frequncia, e s distores de amplitude e fase dos filtros, sinais multifrequenciais complexos e de amplo espectro podem no ser adequadamente codificados. necessrio, portanto, mapear o sinal de sincronismo para a faixa mais linear possvel da resposta em frequncia (em torno de 1 kHz) com espectro mais simples e estreito possvel. Pode-se utilizar para isso uma modulao AM4 com portadora em 1 kHz. Como o sinal de sincronismo deve possuir frequncia muito baixa (e.g. 1/8 Hz) o espectro resultante ser muito estreito, alm de simples. Adicionalmente a demodulao AM tambm simples de ser implementada, o que facilita a recuperao do sinal de sincronismo do udio.
4

AM: Modulao em Amplitude (Amplitude Modulation).

3.2 - Plataforma de Desenvolvimento e Testes


O desenvolvimento e os testes foram realizados atravs de software. O computador utilizado foi um Apple MacBook (identificador de modelo: MacBook 4,1), com processador Intel Core 2 Duo 2.1 GHz e 4 GB de RAM. O sistema operacional utilizado foi o Mac OS X verso 10.5.8. Os aplicativos desenvolvidos utilizaram o "Editor de Roteiros" (AppleScript) verso 2.2.1, o Scilab verso 5.1.1 alpha-1, o SIVP (Scilab Image and Video Processing toolbox) verso 0.5.0 e o QuickTime Player Pro verso 7.6.4. Para os testes tambm foram utilizados os softwares Screenium verso 1.2.4 e Darwin Streaming Server verso 6.0.3. A demanda de memria e processamento dos algoritmos propostos relativamente pequena, uma vez que necessrio carregar na memria apenas 8 segundos de udio e vdeo em baixa qualidade e a anlise no feita em tempo real.

3.3 - Aplicativos Desenvolvidos


Foram desenvolvidos trs aplicativos: AVSyncGen, AVSyncRead e

AVSyncAdjust. O primeiro (AVSyncGen) responsvel pela gerao do sinal de teste utilizado. O segundo (AVSyncRead) responsvel pela anlise dos sinais audiovisuais capturados. O terceiro (AVSyncAdjust) realiza modificaes de sincronismo, adiantando ou atrasando o udio em relao ao vdeo. Todos utilizam para codificao do udio o formato PCM5 linear mono a 8 kHz / 8 bits e para codificao das imagens o formato JPEG6 com 256 tons de cinza. O fluxo de trabalho de um teste completo utilizando esses aplicativos consiste em: 1. Gerar um sinal de teste apropriado com o aplicativo AVSyncGen 2. Transmitir este sinal de teste atravs de um servidor de streaming (e.g. Darwin Streaming Server) 3. Receber o stream atravs de um software cliente (e.g. QuickTime Player)
5 6

PCM: Modulao por Cdigo de Pulsos (Pulse-Code Modulation). JPEG: Grupo de Especialistas Fogrficos Reunidos (Joint Photographic Experts Group), em referncia ao grupo que criou este formato.

10

4. Gravar um pedao da janela de exibio do software cliente utilizando um software capaz de capturar em vdeo a tela do computador juntamente com o udio do sistema (e.g. Screenium) 5. Analisar a gravao realizada utilizando o aplicativo AVSyncRead O aplicativo AVSyncAdjust pode ser utilizado para introduzir erros de sincronismo para testar os outros dois aplicativos desenvolvidos ou para compensar a latncia de um sistema de streaming. A seguir ser apresentada uma descrio mais detalhada do funcionamento dos trs aplicativos desenvolvidos. 3.3.1 - AVSyncGen Este aplicativo se destina a gerar sinais de teste compatveis com diferentes sistemas de streaming. Para tanto, o usurio solicitado a selecionar a taxa de quadros por segundo e as dimenses da imagem em pixels. A partir dessas informaes, um roteiro do Scilab gera uma sequncia de imagens e um udio7, de acordo com o descrito no tpico 3.1 - : gerado um sinal senoidal de sincronismo de 1/8 Hz, a partir do qual gerado o udio (atravs de modulao AM8 com uma portadora em 1 kHz) e a sequncia de imagens (com a luminncia determinada pelo sinal de sincronismo com um offset constante). Em seguida o usurio solicitado a informar onde deseja salvar o sinal de teste a ser gerado. A sequncia de imagens e o udio gerados pelo Scilab so unidos pelo QuickTime e salvos em um arquivo de vdeo, com o sinal de teste repetido algumas vezes9.
7

A sequncia de imagens e o udio so gerados em uma pasta temporria que excluda no final da execuo do aplicativo. 8 Utiliza-se modulao AM DSB-FC (Amplitude Modulation, Double-Sideband Full Carrier) com modulao a 100%. 9 O arquivo gerado possui 64 segundos, por conter oito repeties do sinal de teste (que possui 8 segundos).

11

3.3.2 - AVSyncRead Esse aplicativo se destina a analisar sinais de teste gravados atravs de sistemas a serem avaliados quanto ao sincronismo de udio e vdeo. Para tanto, o usurio solicitado a selecionar o arquivo que contm o sinal de teste a ser avaliado. Esse arquivo aberto pelo QuickTime, cortado com a durao (9 segundos) um pouco superior do sinal de teste (8 segundos) e transformado em uma sequncia de imagens e em um udio10. O QuickTime utilizado ainda para descobrir a taxa de quadros por segundo do arquivo analisado. Em seguida um roteiro do Scilab recupera o sinal de sincronismo (senide de 1/8 Hz) do udio (atravs de demodulao AM: retificao e filtragem) e da sequncia de imagens (atravs da sequncia de valores de luminncia de um pixel arbitrrio11 filtrada). A filtragem dos sinais de sincronismo do udio e da sequncia de imagens feita selecionando apenas um elemento das suas FFT12s correspondente a exatamente 1/8 Hz. Esses elementos so nmeros complexos, com magnitude e fase. Dividir um elemento pelo outro, equivale a dividir o mdulo e subtrair a fase. Dessa forma a diferena de fase (de - a +) pode ser mapeada no intervalo de diferenas de sincronismo detectveis (4 segundos atrasados a 4 segundos adiantados)13. A diferena de sincronismo calculada exibida em milissegundos para o usurio. 3.3.3 - AVSyncAdjust Esse aplicativo se destina a adiantar ou atrasar o udio em relao ao vdeo com uma diferena estipulvel. Para tanto o usurio solicitado a selecionar um arquivo para ajuste, alm de informar a direo do ajuste ("adiantar" ou "atrasar" ou udio em relao ao vdeo) e o valor (diferena de sincronismo desejada, em milissegundos).
10 11

Idem nota 7. utilizado apenas o pixel da extremidade superior esquerda da imagem. 12 FFT: Transformada Rpida de Fourier (Fast Fourier Transform) 13 (-, +] ==> (4 segundos atrasados, 4 segundos adiantados] Utiliza-se o vdeo como referncia (portanto "atrasado" e "adiantado" aqui diz respeito ao udio, em relao ao vdeo). Note-se que a deteco peridica, portanto, por exemplo, 5 segundos atrasados equivale a 1 segundo adiantado.

12

O QuickTime utilizado para separar udio e vdeo14. Em seguida esses elementos so cortados no incio ou no fim do arquivo15 pela diferena desejada e so novamente reunidos. A diferena efetiva de sincronismo controlada pelo corte realizado no incio do arquivo (o corte realizado no fim apenas para no "sobrar" udio sem vdeo ou vdeo sem udio). Quando o elemento cortado no incio do arquivo o udio (no caso de "adiantar" o udio) a diferena cortada poderia ter preciso melhor que 1 milissegundo, devido elevada taxa de amostragem do udio, porm o QuickTime utiliza uma escala particular de tempo para esse tipo de edio que pode limitar a preciso ordem de 1 milissegundo. Quando o elemento cortado no incio do arquivo o vdeo (no caso de "atrasar" o udio), este cortado apenas em quadros inteiros, portanto a preciso do corte est limitada16 pela durao do quadro (inverso da taxa de quadros por segundo). De qualquer forma, a diferena efetiva de sincronismo (em milissegundos) obtida pelo processamento informada ao usurio ao final da execuo do aplicativo.
14

O udio e vdeo separados so salvos em uma pasta temporria que excluda no final da execuo do aplicativo. 15 Para adiantar o udio este cortado no incio do arquivo e o vdeo no final; para atrasar o udio o vdeo cortado no incio do arquivo e o udio no final. 16 Uma alternativa, quando se deseja "atrasar" o udio do sinal de teste com maior preciso , tirando vantagem da sua periodicidade a cada 8 segundos, adiant-lo em 8 segundos menos a diferena desejada (e.g. "adiantar" 7 segundos equivale a "atrasar" 1 segundo).

13

Captulo 4 Resultados Experimentais


4.1 - Teste 1: AVSyncGen + AVSyncRead
Esse teste se destina apenas a verificar que os dois aplicativos (AVSyncGen e AVSyncRead) esto funcionando corretamente. Um arquivo de teste foi gerado pelo AVSyncGen e analisado pelo AVSyncRead. A ttulo de demonstrao foram utilizadas duas combinaes de taxa de quadros por segundo e resoluo da imagem: 15 quadros por segundo com resoluo de 320 x 240 (pixels) e 30 quadros por segundo com resoluo de 640 x 480 (pixels). Em ambos os casos o AVSyncRead relatou que o udio est sincronizado com o vdeo.

4.2 - Teste 2: AVSyncGen + AVSyncAdjust + AVSyncRead


Este teste se destina a verificar a acurcia dos trs aplicativos (AVSyncGen, AVSyncRead e AVSyncAdjust). Um arquivo de teste foi gerado pelo AVSyncGen, processado pelo AVSyncAdjust e analisado pelo AVSyncRead. Foi gerado pelo AVSyncGen um arquivo a 24 quadros por segundo com resoluo de 320 x 200 (pixels). No AVSyncAdjust foi selecionado adiantar o udio 713 milissegundos em relao ao vdeo. O aplicativo informou ter adiantado o udio exatamente em 713 milissegundos. O AVSyncRead, por sua vez, informou que no arquivo processado pelo AVSyncAdjust o udio estava adiantado 714 milissegundos em relao ao vdeo. A diferena encontrada est dentro do esperado, conforme explicado no tpico 3.3.3 - .

14

Foi tambm gerado pelo AVSyncGen um arquivo a 25 quadros por segundo com resoluo de 768 x 576 (pixels). No AVSyncAdjust foi selecionado atrasar o udio 2064 milissegundos em relao ao vdeo. O aplicativo informou ter atrasado o udio em 2080 milissegundos. A diferena encontrada est dentro do esperado, conforme explicado no tpico 3.3.3 - . O AVSyncRead informou que no arquivo processado pelo AVSyncAdjust o udio estava atrasado exatamente 2080 milissegundos em relao ao vdeo.

4.3 - Teste 3: AVSyncGen + QuickTime Player + Screenium + AVSyncRead


Este teste se destina a verificar a acurcia da combinao do QuickTime Player com o Screenium e a repetibilidade desse tipo de teste. Um arquivo de teste foi gerado pelo AVSyncGen, reproduzido pelo QuickTime Player, o vdeo e o udio do computador foram capturados pelo Screenium e o resultado analisado pelo AVSyncRead. Foi gerado pelo AVSyncGen um arquivo a 15 quadros por segundo com resoluo de 320 x 200 (pixels). O arquivo gerado foi reproduzido pelo QuickTime Player enquanto era capturado pelo Screenium17. O arquivo de captura do Screenium foi analisado pelo AVSyncRead, que informou que o udio estava atrasado 33 milissegundos em relao ao vdeo. Em seguida o mesmo arquivo gerado pelo AVSyncGen foi reproduzido novamente pelo QuickTime Player e capturado novamente pelo Screenium. A anlise com o AVSyncRead do novo arquivo de captura do Screenium informou o mesmo resultado: o udio estava atrasado 33 milissegundos em relao ao vdeo. Esse atraso, embora indesejvel, e embora demonstre que o conjunto QuickTime Player e Screenium no garante sincronismo perfeito de udio e vdeo entre reproduo e/ou captura, ainda est dentro de limites aceitveis, de acordo com o critrio exposto no tpico 2.2 - .
17

Para as capturas realizadas com o Screenium no necessrio capturar a imagem inteira, j que apenas o pixel da extremidade superior esquerda utilizado. Nos testes realizados foi capturada uma rea de 32 x 32 pixels do centro da imagem. Tambm no necessrio capturar a durao do arquivo inteiro, basta capturar mais de 9 segundos ao longo da reproduo. possvel utilizar este software no modo de demonstrao (gratuito) para esta finalidade, j que a limitao imposta o limite de tempo de captura em 30 segundos. As condies necessrias para o arquivo a ser analisado esto explicadas no tpico 3.3.2 - .

15

4.4 - Teste 4: AVSyncGen + AVSyncAdjust + QuickTime Player + Screenium + AVSyncRead


Este teste se destina a reforar o teste anterior, verificando mais uma vez a acurcia da combinao do QuickTime Player com o Screenium e a repetibilidade desse tipo de teste, agora introduzindo diferenas de sincronismo aleatrias. O mesmo arquivo gerado pelo AVSyncGen para o teste anterior foi processado pelo AVSyncAdjust gerando duas verses diferenciadas: uma com o udio adiantado 3000 milissegundos e outra com o udio atrasado 1000 milissegundos. As duas verses foram reproduzidas pelo QuickTime Player e capturadas pelo Screenium. Os arquivos gerados pelo Screenium foram analisados com o AVSyncRead, apresentando como resultados, respectivamente, udio adiantado 3038 milissegundos em relao ao vdeo e udio atrasado 942 milissegundos em relao ao vdeo. Portanto, em relao ao que seria a anlise dos arquivos gerados diretamente pelo AVSyncAdjust, no primeiro caso o conjunto QuickTime Player e Screenium resultou em udio adiantado 38 milissegundos em relao ao vdeo e no segundo em udio adiantado 58 milissegundos em relao ao vdeo. Essas diferenas j excedem os limites aceitveis, de acordo com o critrio exposto no tpico 2.2 - . Alm disso, esses resultados demonstram que a repetibilidade tambm no pode ser garantida pelo conjunto QuickTime Player e Screenium.

4.5 - Teste 5: AVSyncGen + Darwin Streaming Server + QuickTime Player + Screenium + AVSyncRead
Este teste visa verificar a existncia de problemas de sincronismo no sistema Darwin Streaming Server.

16

Foi utilizado o mesmo arquivo gerado pelo AVSyncGen para o Teste 3. Este arquivo foi transmitido pelo Darwin Streaming Server, reproduzido pelo QuickTime Player (atravs do endereo de loopback do mesmo computador) e capturado duas vezes pelo Screenium. Os arquivos das capturas realizadas foram ento analisados pelo AVSyncRead. O primeiro apresentou como resultado o udio adiantado 32 milissegundos em relao ao vdeo. O segundo apresentou como resultado o udio adiantado 5 milissegundos em relao ao vdeo. O udio neste teste parece sistematicamente mais adiantado em relao ao vdeo que no Teste 3. Esses resultados, porm, esto dentro da variao dos resultados obtidos nos testes com o QuickTime Player e o Screenium tornando o teste inconclusivo devido grande incerteza dos testes envolvendo o QuickTime Player e o Screenium.

4.6 - Teste 6: AVSyncGen + AVSyncAdjust + Darwin Streaming Server + QuickTime Player + Screenium + AVSyncRead
Este teste se destina a reforar o teste anterior, verificando mais uma vez a existncia de problemas de sincronismo no sistema Darwin Streaming Server, agora introduzindo diferenas de sincronismo aleatrias. Foram utilizados os mesmos arquivos gerados pelo AVSyncGen e processados pelo AVSyncAdjust para o Teste 4. Estes arquivos foram transmitidos pelo Darwin Streaming Server, reproduzidos pelo QuickTime Player (atravs do endereo de loopback do mesmo computador) e capturados pelo Screenium. Os arquivos das capturas realizadas foram ento analisados pelo AVSyncRead. O primeiro resultou no udio adiantado 3061 milissegundos em relao ao vdeo (61 milissegundos mais adiantado do que deveria). O segundo resultou no udio atrasado 955 milissegundos em relao ao vdeo (45 milissegundos mais adiantado do que deveria). Mais uma vez, esses resultados esto dentro da variao dos resultados obtidos nos testes com o QuickTime Player e o Screenium, e alm disso, enquanto no primeiro arquivo o udio foi mais adiantado neste teste que no Teste 4, no segundo arquivo o udio foi atrasado em relao ao Teste 4. Portanto, se existe algum problema de sincronismo com o Darwin Streaming Server este no detectvel com esta metodologia devido grande incerteza dos testes envolvendo o QuickTime Player e o Screenium.

17

Captulo 5 Concluso e Trabalhos Futuros


5.1 - Concluso
possvel avaliar o sincronismo entre udio e vdeo atravs de uma metodologia diferenciada das solues atualmente disponveis no mercado. Um sinal de teste desenvolvido para suportar elevadas taxas de compresso de udio e vdeo pode se prestar a essa finalidade, o que abre caminho para a avaliao de sincronismo em streams de udio e vdeo. Alm disso, embora isso no tenha sido considerado neste trabalho, esta metodologia pode tambm ser aplicada em banda base. Os aplicativos desenvolvidos para gerao do sinal de sincronismo, alterao de sincronismo e anlise de sincronismo funcionam com a preciso desejada. Porm a dependncia de aplicativos externos para complementar o sistema de teste completo limitou severamente a preciso do conjunto.

18

5.2 - Trabalhos Futuros


Do ponto de vista de velocidade de execuo, interface com o usurio e suporte multiplataforma os aplicativos desenvolvidos poderiam ter um ganho substancial se fossem desenvolvidos sem a utilizao de roteiros (scripts) interpretados, atravs de um cdigo compilvel (por exemplo em C++, e talvez com a biblioteca wxWidgets para prover uma interface multiplataforma), porm com um custo mais elevado de desenvolvimento. Alm disso, para melhorar o resultado do sistema proposto necessrio desenvolver uma soluo completa e autnoma, com garantia de preciso, o que eventualmente pode no ser possvel utilizando somente software (sobretudo no que diz respeito captura do udio e vdeo do computador). Uma alternativa pode ser usar uma soluo hbrida, com software e hardware (por exemplo capturando uma sada de vdeo e uma sada de udio do computador com um hardware externo). Utilizar hardware pode inclusive permitir a anlise em tempo real. Mantendo-se apenas a soluo em software, outra alternativa, caso no seja possvel obter preciso na captura do udio e vdeo do computador, seria usar um software cliente recebendo o stream que fosse capaz de gravar o stream recebido para anlise. Embora parea uma soluo mais fcil e mais precisa, essa opo limitaria o suporte a diferentes codecs e mecanismos de transporte e autenticao, alm de no garantir o resultado final do usurio, que na prtica poderia utilizar outros softwares clientes, que tambm podem interferir no sincronismo, para assistir a um stream.

19

Bibliografia
[1] ATSC, Relative Timing of Sound and Vision for Broadcast Operations, Doc. IS191, Washington, 2003. Disponvel em: <http://www.atsc.org/standards/is_191.pdf>. Acesso em: 21 nov. 2009. [2] OMNITEK, Measuring Audio & Video Delays Using OmniGen and OmniView. Disponvel em: <http://www.omnitek.tv/images/stories/pdfs/support/avdelay1.pdf>. Acesso em: 21 nov. 2009. [3] PIXEL, LipTracker Data Sheet 2009. Disponvel em: <http://www.pixelinstruments.tv/pdf/Manuals/LipTracker%20Data%20Sheet%202 009.pdf>. Acesso em: 21 nov. 2009. [4] TEKTRONIX, Audio to Video Delay Corrector - AVDC100. Disponvel em: <http://www2.tek.com/cmsreplive/psrep/13361/25W_13988_0_2008.05.15.16.22.3 9_13361_EN.pdf>. Acesso em: 21 nov. 2009.

20

Apndice 1 Cdigo Fonte


/Applications/AVSyncGen.app/Contents/Resources/Scripts/main.scpt
try # cabealho set version to "Beta 30-Nov-2009" display dialog "Versao " & version & " Autor: Luiz Fausto de Souza Brito Pr-Requisitos: Scilab 5.1.1 alpha 1 SIVP 0.5.0 QuickTime Pro" buttons {"OK"} default button {"OK"} with title "AVSyncGen" with icon POSIX file "/Applications/AVSyncGen.app/Contents/Resources/applet.icns" giving up after 5 # escolhe taxa de quadros por segundo do vdeo set fps to choose from list {60, 50, 30, 25, 24, 15} with title "AVSyncGen" with prompt "Quantos quadros por segundo do vdeo?" default items {15} if fps = false then error end if # escolhe largura da imagem set w to text returned of (display dialog "Qual a largura da imagem (em pixels)?" default answer "320" with title "AVSyncGen") as number # escolhe altura da imagem set h to text returned of (display dialog "Qual a altura da imagem (em pixels)?" default answer "240" with title "AVSyncGen") as number # passa os parmetros selecionados para o Scilab atravs da rea de transferncia set the clipboard to (fps & " " & w & " " & h) as text # executa o script do Scilab que gera imagens e som do shell script "/Applications/scilab-5.1.1-alpha-1.app/Contents/MacOS/bin/scilab -f /Applications/AVSyncGen.app/Contents/Resources/AVSyncGen.sce" # escolhe onde salvar o sinal de teste set out_dir to POSIX file (POSIX path of (choose folder with prompt "Onde deseja salvar o sinal de teste?" default location path to the desktop)) # configura os caminhos para pastas e arquivos utilizados set temp_dir to POSIX file ((POSIX path of the (path to the home folder)) & "temp/") set audio_file to POSIX file ((POSIX path of temp_dir) & "audio.wav") set frame_file to POSIX file ((POSIX path of temp_dir) & "frame001.jpg") set out_file to POSIX file ((POSIX path of out_dir) & "AVSync.mov") # remove sinal de teste anterior, caso exista tell application "Finder" if exists out_file then do shell script ("rm " & POSIX path of out_file) end if end tell tell application "QuickTime Player"

21

# abre o QuickTime, caso no esteja aberto activate # fecha janelas eventualmente abertas close every window saving no # abre o arquivo de som, copia e fecha open audio_file tell document 1 select all copy close end tell # abre a sequncia de imagens, insere o som, repete, salva e fecha open image sequence frame_file frames per second (fps as number) tell document 1 add repeat 3 times select all copy paste end repeat select all export to out_file as QuickTime movie using settings POSIX file "/Applications/AVSyncGen.app/Contents/Resources/QTm ovie.set" close saving no end tell # fecha o QuickTime quit end tell # limpa a rea de transferncia set the clipboard to "" # remove a pasta temporria do shell script ("rm -r " & POSIX path of temp_dir) # exibe mensagem de concluso display dialog "Gerao de sinal de teste concluda com sucesso!" buttons {"OK"} default button {"OK"} with title "AVSyncGen" with icon POSIX file "/Applications/AVSyncGen.app/Contents/Resources/applet.icns" on error # exibe mensagem em caso de erro display dialog "Erro de processamento." buttons {"OK"} default button {"OK"} with title "AVSyncGen" with icon stop end try

22

/Applications/AVSyncGen.app/Contents/Resources/AVSyncGen.sce
//desativa exibicao dos comandos no console e a paginacao, limpa e aloca a memoria mode(-1); lines(0); clear; stacksize ('max'); //desprotege as funcoes primitivas funcprot(0); //carrega biblioteca SIVP exec('/Applications/scilab-5.1.1-alpha-1.app/Contents/MacOS/share/scilab/contrib/sivp0.5.0/loader.sce'); //cabecalho version = 'Beta 30-Nov-2009'; disp(''); disp(''); disp('AVSyncGen'); disp('Geracao de Imagens e Som do Sinal de Teste de Sincronismo'); disp('Versao ' + version); disp('Autor: Luiz Fausto de Souza Brito'); disp(''); disp(''); //configura pasta temporaria if fileinfo('~/temp')==[] then mkdir '~/temp'; end cd ~/temp; unix('rm *'); //recebe informacoes de taxa de quadros por segundo, largura e altura da imagem v = evstr(clipboard("paste")); //cria som do sinal de teste de sincronismo disp('Criando som...'); d = 8; sr = 8000; t_aud = 0:1/sr:d-(1/sr); carrier = sin(2*%pi*1000*t_aud); sync_aud = 0.5+sin(2*%pi*t_aud/d)/2; audio = carrier.*sync_aud; wavwrite(audio,sr,8,'audio.wav'); disp('Concluido!'); disp(''); //cria imagens do sinal de teste de sincronismo disp('Criando imagens... 0 %'); t_vid = 0:1/v(1):d-(1/v(1)); sync_vid = interpln([t_aud;sync_aud],t_vid); k = 0; for i = 1:v(1)*d, j=100*i/(v(1)*d); if int(j/10)>(k/10) then k = int(j); disp('Criando imagens... '+string(k)+' %'); end im = sync_vid(i)*ones(v(3),v(2));

23

name = sprintf('frame%03d.jpg',i); imwrite(im,name); end disp('Concluido!'); disp(''); //encerra quit;

24

/Applications/AVSyncRead.app/Contents/Resources/Scripts/main.scpt
try # cabealho set version to "Beta 30-Nov-2009" display dialog "Versao " & version & " Autor: Luiz Fausto de Souza Brito Pr-Requisitos: Scilab 5.1.1 alpha 1 SIVP 0.5.0 QuickTime Pro" buttons {"OK"} default button {"OK"} with title "AVSyncRead" with icon POSIX file "/Applications/AVSyncRead.app/Contents/Resources/applet.icns" giving up after 5 # escolhe o sinal de teste para anlise set in_file to POSIX file (POSIX path of (choose file with prompt "Qual sinal de teste deseja analisar?" of type {"MooV"} default location (path to the desktop) without invisibles)) # configura os caminhos para pastas e arquivos utilizados set temp_dir to POSIX file ((POSIX path of the (path to the home folder)) & "temp/") set audio_file to POSIX file ((POSIX path of temp_dir) & "audio.wav") set frame_file to POSIX file ((POSIX path of temp_dir) & "frame") # remove pasta temporria anterior, caso exista, e a (re)cria tell application "Finder" if exists temp_dir then do shell script ("rm -r " & POSIX path of temp_dir) end if make new folder at the (path to the home folder) with properties {name:"temp"} end tell tell application "QuickTime Player" # abre o QuickTime, caso no esteja aberto activate # fecha janelas eventualmente abertas close every window saving no # abre o arquivo de teste para anlise, coloca a taxa de quadros por segundo na rea de transferncia, reduz o arquivo ao tamanho necessrio, exporta imagens e som e fecha open in_file tell document 1 if (type of track 1) = "vide" then set track_n to 1 else set track_n to 2 end if set the clipboard to (round ((count frames of track track_n) / (duration / time scale))) as text select at 0 to (9 * time scale) trim export to frame_file as image sequence using settings POSIX file "/Applications/AVSyncRead.app/Contents/Resources/IMs eq.set" export to audio_file as wave using settings POSIX file "/Applications/AVSyncRead.app/Contents/Resources/wav e.set" close

25

end tell # fecha o QuickTime quit end tell # executa o script do Scilab que analisa o sincronismo entre imagens e som do shell script "/Applications/scilab-5.1.1-alpha-1.app/Contents/MacOS/bin/scilab -f /Applications/AVSyncRead.app/Contents/Resources/AVSyncRead.sce" # exibe mensagem de concluso, com resultado recebido do Scilab pela rea de transferncia display dialog ("Anlise concluda com sucesso! O udio est " & (the clipboard) & " em relao ao vdeo.") buttons {"OK"} default button {"OK"} with title "AVSyncRead" with icon POSIX file "/Applications/AVSyncRead.app/Contents/Resources/applet.icns" # limpa a rea de transferncia set the clipboard to "" on error # exibe mensagem em caso de erro display dialog "Erro de processamento." buttons {"OK"} default button {"OK"} with title "AVSyncRead" with icon stop end try

26

/Applications/AVSyncRead.app/Contents/Resources/AVSyncRead.sce
//desativa exibicao dos comandos no console e a paginacao, limpa e aloca a memoria mode(-1); lines(0); clear; stacksize ('max'); //desprotege as funcoes primitivas funcprot(0); //carrega biblioteca SIVP exec('/Applications/scilab-5.1.1-alpha-1.app/Contents/MacOS/share/scilab/contrib/sivp0.5.0/loader.sce'); //cabecalho version = 'Beta 30-Nov-2009'; disp(''); disp(''); disp('AVSyncRead'); disp('Avaliacao de Sincronismo'); disp('Versao ' + version); disp('Autor: Luiz Fausto de Souza Brito'); disp(''); disp(''); //configura pasta temporaria cd ~/temp; //recebe informacao de taxa de quadros por segundo fps = evstr(clipboard("paste")) //analisa sincronismo do som disp('Analisando sincronismo do som...'); [audio,sr,bits] = wavread('audio.wav'); d = 8; audio = audio(1:sr*8); AUDIO = fft(abs(audio)); SYNC_AUD = AUDIO(2); disp('Concluido!'); disp(''); //analisa sincronismo das imagens disp('Analisando sincronismo das imagens... 0 %'); k = 0; for i = 1:fps*d, j=100*i/(fps*d); if int(j/10)>(k/10) then k = int(j); disp('Analisando sincronismo das imagens... '+string(k)+' %'); end name = sprintf('frame%03d.jpg',i); im = imread(name); sync_vid(i) = double(im(1,1)); end SYNC_VID = fft(sync_vid); SYNC_VID = SYNC_VID(2); disp('Concluido!');

27

disp(''); //calcula a diferenca de sincronismo phi=atan(imag(SYNC_AUD/SYNC_VID),real(SYNC_AUD/SYNC_VID)); delay = round(4000*phi/%pi); if delay==0 then str = "sincronizado"; elseif delay>0 then str = "adiantado "+string(delay)+" ms"; else str = "atrasado "+string(-delay)+" ms"; end clipboard("copy",str); //exclui pasta temporaria cd ../; unix('rm -r ~/temp'); //encerra quit;

28

/Applications/AVSyncAdjust.app/Contents/Resources/Scripts/main.scpt
try # cabealho set version to "Beta 30-Nov-2009" display dialog "Versao " & version & " Autor: Luiz Fausto de Souza Brito Pr-Requisitos: QuickTime Pro" buttons {"OK"} default button {"OK"} with title "AVSyncAdjust" with icon POSIX file "/Applications/AVSyncAdjust.app/Contents/Resources/applet.icns" giving up after 5 # escolhe o arquivo para ajuste set in_file to POSIX file (POSIX path of (choose file with prompt "Qual arquivo deseja ajustar?" of type {"MooV"} default location (path to the desktop) without invisibles)) # escolhe direo do ajuste set dir to choose from list {"adiantar", "atrasar"} with title "AVSyncAdjust" with prompt "Deseja adiantar ou atrasar o udio em relao ao vdeo?" default items {"adiantar"} if dir = false then error end if # escolhe a diferena a ser ajustada set dif to text returned of (display dialog "Qual a diferena de tempo desejada (em ms)?" default answer "0" with title "AVSyncAdjust") as number # configura os caminhos para pastas e arquivos utilizados set temp_dir to POSIX file ((POSIX path of the (path to the home folder)) & "temp/") set video_file to POSIX file ((POSIX path of temp_dir) & "video.mov") set audio_file to POSIX file ((POSIX path of temp_dir) & "audio.wav") # remove pasta temporria anterior, caso exista, e a (re)cria tell application "Finder" if exists temp_dir then do shell script ("rm -r " & POSIX path of temp_dir) end if make new folder at the (path to the home folder) with properties {name:"temp"} end tell # move o arquivo de entrada para um arquivo temporrio do shell script ("mv " & POSIX path of in_file & " " & POSIX path of video_file) tell application "QuickTime Player" # abre o QuickTime, caso no esteja aberto activate # fecha janelas eventualmente abertas close every window saving no # abre o arquivo de vdeo para ajuste, exclui o som e corta open video_file tell document 1 export to audio_file as wave if (type of track 1) = "vide" then set track_n to 2 else set track_n to 1 end if delete track track_n

29

set dur_vid to (1000 * duration / time scale) if dir = {"adiantar"} then select at 0 to (duration - ((round (dif * time scale / (1000 * (duration of frame 2 of track 1)))) * (duration of frame 2 of track 1))) else select at ((round (dif * time scale / (1000 * (duration of frame 2 of track 1)))) * (duration of frame 2 of track 1)) to duration end if trim set (duration of frame 1 of track 1) to (duration of frame 2 of track 1) set dif_vid to (dur_vid - (1000 * duration / time scale)) end tell # abre o arquivo de som, exclui o vdeo, corta, copia e fecha open audio_file tell document 1 if (type of track 1) = "vide" then set track_n to 1 else set track_n to 2 end if delete track track_n set dur_aud to (1000 * duration / time scale) if dir = {"atrasar"} then select at 0 to (round (duration - (dif * time scale / 1000))) else select at (round (dif * time scale / 1000)) to duration end if trim set dif_aud to (dur_aud - (1000 * duration / time scale)) select all copy close end tell # insere o som no arquivo para ajuste, salva e fecha tell document 1 add select all export to in_file as QuickTime movie using settings POSIX file "/Applications/AVSyncAdjust.app/Contents/Resources/QT movie.set" close end tell # fecha o QuickTime quit end tell if dir = {"adiantar"} then set dif_real to dif_aud else set dif_real to dif_vid end if # limpa a rea de transferncia set the clipboard to "" # remove pasta temporria do shell script ("rm -r " & POSIX path of temp_dir) # exibe mensagem de concluso display dialog ("Correo concluda com sucesso! Processamento realizado: " & dir & " udio em " & (round (dif_real)) & " ms.") buttons

30

{"OK"} default button {"OK"} with title "AVSyncAdjust" with icon POSIX file "/Applications/AVSyncAdjust.app/Contents/Resources/applet.icns" on error # exibe mensagem em caso de erro display dialog "Erro de processamento." buttons {"OK"} default button {"OK"} with title "AVSyncAdjust" with icon stop end try

31

You might also like