Slides de um vídeo de seminário
scripts/ contém uma ferramenta em duas formas que fazem a mesma coisa:
| Script | Uso em |
|---|---|
scripts/extract_slides.sh | Linux, macOS, Git Bash ou WSL no Windows |
scripts/extract_slides.ps1 | Windows PowerShell, sem necessidade de bash |
scripts/slides.tex | Template Beamer que os scripts copiam para junto dos quadros |
Como funciona: yt-dlp baixa apenas o stream de vídeo (sem áudio, no máximo 1080p). ffmpeg amostra a 1 quadro/s e mantém o primeiro quadro mais todo quadro cuja pontuação de mudança de cena ultrapasse um limiar, de modo que cada quadro mantido é um novo slide ou uma nova etapa de construção. O log showinfo fornece o tempo de vídeo de cada quadro. A pasta de saída então contém:
slide_001.png,slide_002.png, ...: um por mudança de slidetimestamps.txt: o tempo de vídeo de cada um, em segundosframe_list.texeslides.tex:pdflatex slides.texgera uma página por slide com seu horárioh:mm:ssabaixo
Passos
-
Verifique as ferramentas. Execute
ffmpeg -versioneyt-dlp --version. Se faltar alguma, instale (abaixo) ou informe o usuário como. yt-dlp não é necessário para um arquivo local. -
Escolha o script para a plataforma. No Windows, use o do PowerShell a menos que o usuário esteja claramente no Git Bash ou WSL.
-
Execute-o na URL ou arquivo que o usuário forneceu, em uma pasta nomeada conforme a palestra (por exemplo
-o palestrante_topico_quadros), não dentro da pasta da skill.bash scripts/extract_slides.sh -u "https://www.youtube.com/watch?v=ID" -o talk_frames bash scripts/extract_slides.sh -i "recording.mp4" -o talk_framespowershell -ExecutionPolicy Bypass -File scripts\extract_slides.ps1 -Url "https://www.youtube.com/watch?v=ID" -OutDir talk_frames powershell -ExecutionPolicy Bypass -File scripts\extract_slides.ps1 -InputFile "C:\caminho\para\recording.mp4" -OutDir talk_frames-ExecutionPolicy Bypassignora o bloqueio padrão do Windows em scripts, apenas para essa execução. -
Examine os quadros antes de relatar. Abra alguns PNGs (primeiro, meio, último) e verifique:
- Webcam ou visão do palestrante ao lado dos slides: o movimento do palestrante gera falsas mudanças de slide. Encontre a área dos slides em um quadro e execute novamente com um recorte,
-c L:A:X:Y/-Crop L:A:X:Y(sintaxe de recorte do ffmpeg: largura, altura, depois canto superior esquerdo). - Poucos quadros (etapas ou pequenas mudanças perdidas): execute novamente com um limiar mais baixo,
-t 0.05/-Threshold 0.05. - Muitos quadros (vídeo, animações, ruído da câmera): aumente para
0.2-0.3, ou recorte. - Duplicatas: exclua os PNGs extras e suas linhas em
frame_list.tex.
- Webcam ou visão do palestrante ao lado dos slides: o movimento do palestrante gera falsas mudanças de slide. Encontre a área dos slides em um quadro e execute novamente com um recorte,
-
Gere o PDF se o usuário quiser:
cdpara a pasta de saída e executepdflatex slides.tex(oulatexmk -pdf slides.tex). -
Relate a contagem de quadros, a pasta de saída, o PDF e qualquer coisa pendente para o usuário, como duplicatas que você manteve intencionalmente.
Opções
| bash | PowerShell | Significado | Padrão |
|---|---|---|---|
-u URL | -Url URL | Vídeo para baixar (qualquer site suportado pelo yt-dlp) | |
-i ARQUIVO | -InputFile ARQUIVO | Vídeo local em vez de download | |
-o DIR | -OutDir DIR | Pasta de saída | video_frames |
-t X | -Threshold X | Limiar de mudança de cena, 0-1 | 0.10 |
-c L:A:X:Y | -Crop L:A:X:Y | Recortar para a área dos slides primeiro | nenhum |
-b NOME | -Browser NOME | Usar cookies de login deste navegador (chrome, firefox, edge, ...) | nenhum |
Instalando as ferramentas
- Windows:
winget install --id yt-dlp.yt-dlpewinget install --id Gyan.FFmpeg, depois feche e reabra o PowerShell para que ele as encontre. - macOS:
brew install yt-dlp ffmpeg - Linux:
sudo apt install ffmpeg(ou o equivalente da distribuição) epip install -U yt-dlp - LaTeX (apenas para o PDF): TeX Live ou MiKTeX. O
latexmkdo MiKTeX precisa de Perl;pdflatexsimples não precisa.
Solução de problemas
- Gravação atrás de login (Panopto, Zoom cloud, portal universitário): passe
-b chrome/-Browser chrome(ou o navegador com o qual o usuário está logado). Se o yt-dlp ainda não conseguir obtê-la, peça ao usuário para baixar o vídeo e use-i. $'\r': comando não encontradooupipefail: invalid option nameno Git Bash: o arquivo.shtem terminações de linha do Windows. Executesed -i 's/\r$//' scripts/extract_slides.shuma vez.- Erros do yt-dlp no YouTube ("Faça login para confirmar", erros de formato): atualize-o primeiro,
yt-dlp -Uoupip install -U yt-dlp, que corrige a maioria deles. - Sem rede para o host do vídeo (sessão em sandbox ou na nuvem): informe isso e forneça ao usuário o comando para executar em sua própria máquina.
Baixe apenas gravações que o usuário tem permissão para acessar e mantenha os quadros para suas próprias anotações e estudo, a menos que a licença da palestra diga o contrário.