Tutorial: como usar /video/merge para criar slideshows de vídeo

Um tutorial de /video/merge
Recentemente, apresentei o Robot /video/merge com
um exemplo de caso de uso em que vídeo e som são mesclados, com a
ajuda do parâmetro audio_delay. Agora decidi apresentar um tutorial mais aprofundado, combinando o
mesmo Robot com alguns dos outros Robots poderosos disponíveis na
Transloadit.
Desta vez, vamos abordar outro caso de uso único: criar um slideshow em vídeo composto por várias imagens e mesclá-lo com uma gravação de áudio. Vou percorrer cada etapa do início ao fim antes de apresentar o resultado final.

Preparando nossos arquivos
Como de costume, antes de criar nossa Assembly, precisamos preparar os arquivos necessários. Como exemplo prático, vou transformar seções de um documento PDF em um slideshow coerente. Mais especificamente, uma das folhas de consulta de machine learning disponibilizadas pela Universidade de Stanford. Quero combinar as páginas do PDF para criar um vídeo e depois narrar por cima dele. Algo um pouco educativo para mim, pensando em um trabalho que tenho pela frente 😉
Depois disso, vamos armazenar o resultado no Dropbox para que ele possa ser acessado a qualquer momento.
Conhecendo os Robots
Vamos ao que interessa dando uma olhada rápida em todos os Robots que serão úteis para nós nesta Assembly:
A importação do arquivo de áudio gravado ficará a cargo do Robot /upload/handle, enquanto o arquivo PDF será importado pelo Robot /http/import. Em seguida, usamos o Robot /document/thumbs para gerar imagens a partir do nosso arquivo PDF, e depois o Robot /video/merge junta todas as imagens em um único arquivo de vídeo principal. Por fim, um dos meus favoritos mais usados, o Robot /dropbox/store, me permite armazenar o resultado final!
Parte 1: importando nossos arquivos
Aqui estão os dois primeiros Steps do Template que criei. Um para upload e outro para importação via HTTP:
{
"steps": {
":original": {
"robot": "/upload/handle"
},
"document": {
"robot": "/http/import",
"url": "https://github.com/afshinea/stanford-cs-229-machine-learning/raw/master/en/cheatsheet-supervised-learning.pdf"
}
}
}
Primeiro, precisamos do meu arquivo de áudio gravado. Vou usar o Robot /upload/handle, um Robot simples que facilita o upload programático de um arquivo local da minha máquina. Recomendo ler nosso post recente do Re-loadit para conhecer o Robot mais a fundo!
Com o arquivo de áudio em mãos, podemos usar o Robot /http/import para acessar diretamente o link do repositório do GitHub que mencionei acima. O Robot buscará o arquivo PDF a partir do link e nos permitirá fazer o que quisermos com ele em quaisquer Steps futuros da Assembly.
Parte 2: gerando imagens a partir do PDF
Nosso terceiro Step na Assembly, depois de importar os arquivos, usa o Robot /document/thumbs. Este Step fica assim nas minhas Assembly Instructions:
{
"thumbnail": {
"use": [
"document"
],
"robot": "/document/thumbs",
"result": true,
"resize_strategy": "fit"
}
}
Agora o Robot vai gerar várias imagens, uma para cada página. Defini o parâmetro
result como true para poder ir à página de Assemblies e verificar se o
Robot dividiu as imagens do jeito que eu quero. O resize_strategy está definido como
'fit' neste exemplo, o que significa que nossas imagens manterão a proporção e serão
redimensionadas com base no lado maior da imagem.
Parte 3: mesclando tudo
O quarto Step é onde o Robot /video/merge passa a ter um papel importante. Pegamos os Steps de miniaturas e de gravação do Template e os passamos ao Robot para que ele os use na mesclagem.
{
"merged": {
"use": {
"steps": [
{
"name": ":original",
"as": "audio"
},
{
"name": "thumbnail",
"as": "image"
}
],
"bundle_steps": true
},
"robot": "/video/merge",
"result": true,
"duration": 40,
"ffmpeg_stack": "v7",
"framerate": "1/10",
"preset": "webm-1080p",
"resize_strategy": "fit"
}
}
Dois Steps são usados no processo de mesclagem: meu arquivo de áudio, conhecido como
:original na Parte 1, e o conjunto de imagens criado a partir do meu arquivo PDF, thumbnail da Parte 2.
O PDF que estou usando tem quatro páginas no total, e seria uma boa ideia exibir cada imagem na tela
por pelo menos dez segundos, já que há bastante conteúdo nelas.
Por isso, defini o parâmetro duration como 40 segundos e o framerate como 1/10, o que significa
que uma nova imagem será exibida a cada dez segundos. WebM é um formato prático que recomendo por ter
um tamanho menor em comparação ao MP4, então vamos defini-lo aqui por meio do parâmetro preset.
Isso deve mesclar nosso áudio e nossas imagens com sucesso em um único vídeo bacana.
Parte 4: o resultado final
Por fim, o quinto e último Step da minha Assembly é exportar os
resultados para o Dropbox. O Step exported usa o Step merged para saber qual arquivo queremos
exportar. Minhas Credenciais de Template me dão acesso ao meu Dropbox por meio da
minha Assembly, e o parâmetro path especifica o nome do vídeo resultante e onde
quero armazená-lo. Aqui, ${file.id} nos fornece um ID único de 32 caracteres, então não há chance de
conflitos quando eu exportar os resultados.
{
"steps": {
":original": {
"robot": "/upload/handle"
},
"document": {
"robot": "/http/import",
"url": "https://github.com/afshinea/stanford-cs-229-machine-learning/raw/master/en/cheatsheet-supervised-learning.pdf"
},
"thumbnail": {
"use": [
"document"
],
"robot": "/document/thumbs",
"result": true,
"resize_strategy": "fit"
},
"merged": {
"use": {
"steps": [
{
"name": ":original",
"as": "audio"
},
{
"name": "thumbnail",
"as": "image"
}
],
"bundle_steps": true
},
"robot": "/video/merge",
"result": true,
"duration": 40,
"ffmpeg_stack": "v7",
"framerate": "1/10",
"preset": "webm-1080p",
"resize_strategy": "fit"
},
"exported": {
"use": [
"merged"
],
"robot": "/dropbox/store",
"credentials": "my_videos",
"path": "Videos/${file.id}.${file.ext}"
}
}
}
O arquivo de vídeo produzido por este Template pode ser visto abaixo.
Vamos recapitular tudo o que esta Assembly faz. Faço upload de um arquivo de áudio e busco um PDF. O arquivo PDF é dividido em imagens separadas, uma para cada página. As imagens e o áudio são mesclados em um único vídeo WebM com duração e taxa de quadros definidas. Cenários bem complexos, todos executados em poucas linhas!
Confira por conta própria a documentação do Robot /video/merge e use a criatividade para combiná-lo com a ampla variedade de outros recursos disponíveis aqui na Transloadit.