Geradores de Script
Pré-requisitos
Visão Geral
Os Geradores de Script no Mosaico fornecem uma maneira automatizada de criar roteiros de vídeo a partir de coleções de mídia. São particularmente úteis para converter conteúdo como artigos de notícias em roteiros de vídeo estruturados que podem ser usados para gerar projetos de vídeo completos.
Sistema de Geração de Script
O sistema consiste em três componentes principais:
- Protocolo do Gerador de Script: Define a interface para geradores de script
- Roteiro de Filmagem: Representa a saída estruturada gerada pelo gerador de script
- Tomada: Representa segmentos individuais do script
O Protocolo ScriptGenerator
Características principais:
- Protocolo verificável em tempo de execução
- Manipulação flexível de entrada
- Formato de saída padronizado
- Design extensível
from mosaico.script_generators.protocol import ScriptGenerator
from mosaico.media import Media
@runtime_checkable
class ScriptGenerator(Protocol):
def generate(self, media: Sequence[Media], **kwargs: Any) -> ShootingScript:
"""Generate a shooting script from media."""
...
Roteiros de Filmagem
Um ShootingScript
representa um roteiro de vídeo completo com múltiplas tomadas. A ideia é fornecer um formato estruturado que pode ser usado para gerar projetos de vídeo. O formato do roteiro de filmagem foi escolhido para ser simples e flexível, mantendo os elementos essenciais de um roteiro de vídeo.
Os principais componentes de um roteiro de filmagem são:
- Título: O título do roteiro
- Descrição: Uma descrição opcional do conteúdo do roteiro
- Tomadas: Coleção de tomadas que compõem o roteiro
Estes componentes fornecem uma visão geral do conteúdo do vídeo e dos segmentos individuais que serão incluídos no vídeo final.
Tomadas
Tomadas individuais representam segmentos distintos no roteiro que podem ser usados para criar projetos de vídeo. Cada tomada tem as seguintes propriedades:
- Número: Um identificador único para a tomada
- Descrição: Uma breve descrição do conteúdo da tomada
- Tempo Inicial: O tempo de início da tomada no vídeo
- Tempo Final: O tempo final da tomada no vídeo
- Legenda: Legendas opcionais para a tomada
- Referências de Mídia: Referências à mídia usada na tomada
- Efeitos: Efeitos opcionais aplicados à tomada
Warning
Referências de mídia não são objetos como AssetReference
, mas sim strings simples que podem ser usadas para identificar objetos de mídia em uma lista de mídia. Não devem ser confundidas com objetos de mídia reais ou objetos AssetReference
.
Usando Geradores de Script
Geração Básica de Script
# Create generator
generator = MyVideoScriptGenerator(
context="News article content...",
num_paragraphs=10
)
# Generate script from media
script = generator.generate(
media=[
image1_media,
image2_media,
video_media
]
)
Criando Projetos de Vídeo
from mosaico.video.project import VideoProject
# Generate project from script
project = VideoProject.from_script_generator(
script_generator=generator,
media=media_files,
speech_synthesizer=tts_engine,
audio_transcriber=transcriber
)
Gerador de Script Personalizado
class CustomScriptGenerator:
"""Custom implementation of ScriptGenerator."""
def generate(self,
media: Sequence[Media],
**kwargs: Any) -> ShootingScript:
# Custom script generation logic
shots = [
Shot(
number=1,
description="Opening shot",
start_time=0,
end_time=5,
subtitle="Welcome",
media_references=[0],
effects=["zoom_in"]
)
]
return ShootingScript(
title="Custom Video",
shots=shots
)
Melhores Práticas
Organização de Mídia
- Fornecer descrições claras de mídia
- Ordenar mídia logicamente
- Incluir metadados relevantes
Gerenciamento de Tomadas
- Manter tomadas focadas e concisas
- Garantir transições lógicas
- Combinar mídia com conteúdo
Trabalhando com Scripts Gerados
Análise de Script
# Analyze generated script
print(f"Script duration: {script.duration}s")
print(f"Number of shots: {script.shot_count}")
for shot in script.shots:
print(f"Shot {shot.number}: {shot.duration}s")
print(f"Media used: {shot.media_references}")
Validação de Script
def validate_script(script: ShootingScript) -> bool:
"""Validate script properties."""
if script.duration > max_duration:
return False
if not all(shot.subtitle for shot in script.shots):
return False
return True
Verificação de Referências de Mídia
def check_media_references(
script: ShootingScript,
media: Sequence[Media]
) -> bool:
"""Verify all media references are valid."""
media_count = len(media)
for shot in script.shots:
if any(ref >= media_count for ref in shot.media_references):
return False
return True
Integração com Outros Componentes
Síntese de Fala
# Generate speech for subtitles
speech_assets = speech_synthesizer.synthesize(
[shot.subtitle for shot in script.shots]
)
Aplicação de Efeitos
# Apply effects from script
for shot in script.shots:
effects = [create_effect(effect) for effect in shot.effects]
# Apply to corresponding assets
Conclusão
Entender os geradores de script é crucial para a produção automatizada de vídeo no Mosaico. Eles fornecem uma ponte entre conteúdo bruto e projetos de vídeo estruturados, permitindo uma transformação eficiente do conteúdo enquanto mantêm o controle criativo e os padrões de qualidade.