La quarantena è un momento meraviglioso per imparare qualcosa. Tuttavia, come capisci, affinché qualcuno impari qualcosa, qualcuno deve insegnare. Se hai una presentazione che vuoi fare davanti a un pubblico di milioni di persone e ottenere fama mondiale, allora questo articolo fa per te. Qui troverai le istruzioni passo passo su come realizzare un video dalla tua presentazione.
Riteniamo che il percorso di registrazione di "commenti audio" in PowerPoint e di esportazione della presentazione in video sia banale e non fornisca un decimo delle funzionalità necessarie per un video davvero interessante.
Innanzitutto, decidiamo di quali frame abbiamo bisogno:
- Le diapositive reali con voce fuori campo
- cambio diapositiva
- Citazioni da film famosi
- Diverse cornici con il volto del docente e il suo gatto preferito (facoltativo)
Creazione di una struttura di directory
.
├── clipart
├── clips
├── rec
├── slide
└── sound
Lo scopo delle directory nell'ordine di elencazione: film da cui estrarremo citazioni (clipart), frammenti dei nostri futuri video (clip), video dalla fotocamera (rec), diapositive sotto forma di immagini (slide), suoni (suono).
Realizzare una presentazione in immagini
Per un vero utente Linux con gli occhi rossi, realizzare una presentazione sotto forma di immagini non presenta alcun problema. Permettetemi solo di ricordarvi che un documento in formato pdf può essere analizzato in immagini utilizzando il comando
pdftocairo -png -r 128 ../lecture.pdf
Se non esiste tale comando, installa tu stesso il pacchetto poppler-utils (istruzioni per Ubuntu; se hai Arch, allora sai perfettamente cosa fare senza di me).
Anche qui credo che il video sia preparato in formato HD Ready, cioè 1280x720. Una presentazione con una dimensione orizzontale di 10 pollici dà esattamente questa dimensione quando viene scaricata (vedere l'opzione -r 128).
Preparazione del testo
Se vuoi creare materiale davvero eccezionale, il tuo discorso deve essere scritto prima. Pensavo anche che avrei potuto parlare il testo senza preparazione, soprattutto perché ho una buona esperienza come docente. Ma una cosa è esibirsi dal vivo, un’altra è registrare un video. Non essere pigro: il tempo trascorso a digitare ti ripagherà molte volte.
Ecco il mio formato di registrazione. Il numero nel titolo è uguale al numero della diapositiva, le interruzioni sono evidenziate in rosso. Qualsiasi editor è adatto alla preparazione, ma è meglio prendere un elaboratore di testi completo, ad esempio onlyoffice.
Voce sulle diapositive
Cosa posso dire: accendi il microfono e scrivi :)
L'esperienza dimostra che la qualità di registrazione anche dal microfono esterno più economico è incomparabilmente migliore rispetto al microfono integrato di un laptop. Se vuoi un'attrezzatura di qualità, la consiglio
Per la registrazione ho usato registratore audio – un'applicazione molto semplice per la registrazione del suono. Puoi prenderlo, ad esempio, qui:
sudo add-apt-repository ppa:audio-recorder/ppa
sudo apt-get update
sudo apt-get install audio-recorder
La cosa principale in questo passaggio è nominare correttamente i file. Il nome deve essere composto dal numero della diapositiva e dal numero del frammento. I frammenti sono numerati con numeri dispari: 1, 3, 5, ecc. Quindi, per la diapositiva, il cui testo è mostrato nell'immagine, verranno creati due file: 002-1.mp3 и 002-3.mp3.
Se hai registrato tutti i video contemporaneamente in una stanza tranquilla, non dovrai fare altro. Se hai registrato in più passaggi, è meglio equalizzare il livello del volume:
mp3gain -r *.mp3
Utilità mp3gain Per qualche motivo non è nei repository standard, ma puoi trovarlo qui:
sudo add-apt-repository ppa:flexiondotorg/audio
sudo apt-get update
sudo apt-get install mp3gain
Dopo tutto questo, devi registrare un altro file con silenzio. È necessario aggiungere una colonna sonora ai video muti: se un video ha una colonna sonora e un altro no, allora è difficile incollare insieme questi video. Il silenzio può essere registrato da un microfono, ma è meglio creare un file nell'editor . La lunghezza del file dovrebbe essere almeno un secondo (è possibile anche di più) e dovrebbe avere un nome silenzio.mp3
Preparazione di video di interruzione
Qui tutto è limitato solo dalla tua immaginazione. Puoi utilizzare un editor per modificare i video Avidemux. Una volta era nei repository standard, ma poi per qualche motivo è stato tagliato. Questo non ci fermerà:
sudo add-apt-repository ppa:ubuntuhandbook1/avidemux
sudo apt-get update
sudo apt-get install avidemux2.7-qt5
Ci sono molte istruzioni per lavorare con questo editor su Internet e, in linea di principio, tutto è intuitivo. È importante soddisfare diverse condizioni.
Innanzitutto, la risoluzione video deve corrispondere alla risoluzione video di destinazione. Per fare ciò, è necessario utilizzare due filtri nel "video di output": swsResize per modificare la risoluzione e "aggiunta di campi" per trasformare un film sovietico di "formato stretto" in un formato ampio. Tutti gli altri filtri sono facoltativi. Ad esempio, se qualcuno non capisce perché l'affermazione del signor Sharikov si trova nel frammento in discussione, utilizzando il filtro "aggiungi logo", è possibile sovrapporre il logo PostgreSQL al "Cuore di cane".
In secondo luogo, tutti i frammenti devono utilizzare lo stesso frame rate. Uso 25 fotogrammi al secondo perché la mia macchina fotografica e le vecchie pellicole sovietiche mi danno tanto. Se il film da cui stai tagliando è stato girato a una velocità diversa, utilizza il filtro Ricampiona video.
In terzo luogo, tutti i frammenti devono essere compressi con lo stesso codec e confezionati negli stessi contenitori. Pertanto dentro Avidemux per il formato, seleziona video – “Mpeg4AVC (x264)", Audio - "CAA (FAAC)", formato di output - "mixer MP4'.
In quarto luogo, è importante nominare correttamente i video tagliati. Il nome del file deve essere composto dal numero della diapositiva e dal numero del frammento. I frammenti vengono numerati con numeri pari, a partire da 2. Pertanto, per il fotogramma in questione, il video con l'interruzione dovrebbe essere chiamato 002-2.mp4
Dopo che i video sono pronti, devi trasferirli nella directory con i frammenti. Impostazioni Avidemux differiscono dalle impostazioni ffmpeg per impostazione predefinita con parametri misteriosi tbr, tbn, tbc. Non influiscono sulla riproduzione, ma non consentono di incollare insieme i video. Quindi ricodifichiamo:
for f in ???-?.mp4;
do
ffmpeg -hide_banner -y -i "${f}" -c copy -r 25 -video_track_timescale 12800 ../clips/$f
done
Salvaschermi di ripresa
Anche qui tutto è semplice: giri sullo sfondo di uno schema intelligente, metti i video risultanti in un catalogo rece da lì trasferiscilo nella directory con i frammenti. Le regole di denominazione sono le stesse delle virgolette di interruzione, il comando di ricodifica è il seguente:
ffmpeg -y -i source_file -r 25 -vcodec libx264 -pix_fmt yuv420p -profile:v high -coder 1 -s 1280x720 -ar 44100 -ac 2 ../clips/xxx-x.mp4
Se hai intenzione di iniziare il video con il tuo discorso, dai un nome a questo frammento 000-1.mp4
Realizzazione di cornici da immagini statiche
È ora di modificare video da immagini e suoni statici. Questo viene fatto con il seguente script:
#!/bin/bash
for sound in sound/*.mp3
do
soundfile=${sound##*/}
chunk=${soundfile%%.mp3}
clip=${chunk}.mp4
pic=slide/${chunk%%-?}.png
duration=$(soxi -D ${sound} 2>/dev/null)
echo ${sound} ${pic} ${clip} " - " ${duration}
ffmpeg -hide_banner -y -loop 1 -i ${pic} -i ${sound} -r 25 -vcodec libx264 -tune stillimage -pix_fmt yuv420p -profile:v high -coder 1 -t ${duration} clips/${clip}
done
Tieni presente che la durata del file audio viene determinata innanzitutto dall'utilità soxi, quindi viene modificato il video della lunghezza richiesta. Tutti i consigli che ho trovato sono più semplici: invece di una bandiera -t ${durata} viene utilizzata la bandiera -più breve. Infatti ffmpeg determina la lunghezza dell'mp3 in modo molto approssimativo e durante la modifica la lunghezza della traccia audio può differire notevolmente (di uno o due secondi) dalla lunghezza della traccia video. Ciò non ha importanza se l'intero video è costituito da un singolo fotogramma, ma quando si incolla un video del genere con interruzioni sul bordo si verificano effetti di balbuzie estremamente spiacevoli.
Un altro modo per determinare la durata di un file mp3 è utilizzare mp3info. Anche lei commette errori, e qualche volta ffmpeg dà più di mp3info, a volte è il contrario, a volte mentono entrambi – non ho notato alcuno schema. E qui soxi funziona correttamente.
Per installare questa utile utility, procedi come segue:
sudo apt-get install sox libsox-fmt-mp3
Effettuare transizioni tra le diapositive
Una transizione è un breve video in cui una diapositiva si trasforma in un'altra. Per realizzare tali video, prendiamo le diapositive in coppia e utilizziamo imagemagick trasforma l'uno nell'altro:
#!/bin/bash
BUFFER=$(mktemp -d)
for pic in slide/*.png
do
if [[ ${prevpic} != "" ]]
then
clip=${pic##*/}
clip=${clip/.png/-0.mp4}
#
# генерируем картинки
#
./fade.pl ${prevpic} ${BUFFER} 1280 720 5 direct 0
./fade.pl ${pic} ${BUFFER} 1280 720 5 reverse 12
#
# закончили генерировать картинки
#
ffmpeg -y -hide_banner -i "${BUFFER}/%03d.png" -i sound/silence.mp3 -r 25 -y -acodec aac -vcodec libx264 -pix_fmt yuv420p -profile:v high -coder 1 -shortest clips/${clip}
rm -f ${BUFFER}/*
fi
prevpic=${pic}
done
rmdir ${BUFFER}
Per qualche motivo volevo che la diapositiva fosse disseminata di punti, e poi la diapositiva successiva sarebbe stata assemblata dai punti, e per questo ho scritto uno script chiamato dissolvenza.pl avere imagemagick, un vero utente Linux creerà qualsiasi effetto speciale, ma se a qualcuno piace la mia idea con lo scattering, ecco lo script:
#!/usr/bin/perl
use strict;
use warnings;
use locale;
use utf8;
use open qw(:std :utf8);
use Encode qw(decode);
use I18N::Langinfo qw(langinfo CODESET);
my $codeset = langinfo(CODESET);
@ARGV = map { decode $codeset, $_ } @ARGV;
my ($source, $target, $width, $height, $pixsize, $rev, $file_no) = @ARGV;
my @rects;
$rects[$_] = "0123456789AB" for 0..$width*$height/$pixsize/$pixsize/12 - 1;
for my $i (0..11) {
substr($_,int(rand(12-$i)),1) = "" for (@rects);
my $s = $source;
$s =~ s#^.*/##;
open(PICTURE,"| convert - -transparent white PNG:- | convert "$source" - -composite "$target/".substr("00".($file_no+$i),-3).".png"");
printf PICTURE ("P3n%d %dn255n",$width,$height);
for my $row (1..$height/$pixsize/3) {
for my $j (0..2) {
my $l = "";
for my $col (1..$width/$pixsize/4) {
for my $k (0..3) {
$l .= (index($rects[($row-1)*$width/$pixsize/4+$col-1],sprintf("%1X",$j*4+$k))==-1 xor $rev eq "reverse") ? "0 0 0n" : "255 255 255n" for (1..$pixsize);
}
}
print PICTURE ($l) for (1..$pixsize);
}
}
close(PICTURE);
}
Montiamo il video finito
Ora abbiamo tutti i frammenti. Vai al catalogo clip e assemblare il film finito utilizzando due comandi:
ls -1 ???-?.mp4 | gawk -e '{print "file " $0}' >list.txt
ffmpeg -y -hide_banner -f concat -i list.txt -c copy MOVIE.mp4
Buona visione ai tuoi studenti riconoscenti!
Fonte: habr.com