Kwarantanna to wspaniały czas, żeby się czegoś nauczyć. Jednak, jak rozumiesz, aby ktoś się czegoś nauczył, ktoś musi uczyć. Jeśli masz prezentację, którą chcesz wygłosić przed wielomilionową publicznością i zyskać światową sławę, ten artykuł jest dla Ciebie. Tutaj znajdziesz instrukcję krok po kroku jak zrobić film z prezentacji.
Odrzucamy ścieżkę nagrywania „komentarzy audio” w programie PowerPoint i eksportowania prezentacji do wideo jako banalną i nie zapewniającą jednej dziesiątej możliwości potrzebnych do stworzenia naprawdę fajnego filmu.
Najpierw zdecydujmy, jakich ramek potrzebujemy:
- Rzeczywiste slajdy z lektorem
- zmiana slajdu
- Cytaty z popularnych filmów
- Kilka kadrów z twarzą lektora i jego ulubionym kotem (opcjonalnie)
Tworzenie struktury katalogów
.
├── clipart
├── clips
├── rec
├── slide
└── sound
Przeznaczenie katalogów w kolejności zestawienia: filmy, z których będziemy wyciągać cytaty (clipart), fragmenty naszego przyszłego wideo (klipy), filmy z kamery (rec), slajdy w formie zdjęć (slajd), dźwięk (dźwięk).
Wykonanie prezentacji na zdjęciach
Dla prawdziwego czerwonookiego użytkownika Linuksa wykonanie prezentacji w formie obrazkowej nie nastręcza żadnego problemu. Przypomnę tylko, że dokument w formacie pdf można rozbić na obrazy za pomocą polecenia
pdftocairo -png -r 128 ../lecture.pdf
Jeśli nie ma takiego polecenia, zainstaluj pakiet samodzielnie poppler-utils (instrukcja dla Ubuntu; jeśli masz Archa, to doskonale wiesz, co zrobić beze mnie).
Tutaj i dalej uważam, że film jest przygotowany w formacie HD Ready, czyli 1280x720. Prezentacja o rozmiarze poziomym 10 cali daje dokładnie ten rozmiar po wyładowaniu (zobacz opcję -r 128).
Przygotowanie tekstu
Jeśli chcesz stworzyć naprawdę świetny materiał, najpierw musisz napisać swoje przemówienie. Myślałam też, że uda mi się wypowiedzieć tekst bez przygotowania, tym bardziej, że mam duże doświadczenie w prowadzeniu wykładów. Ale co innego występować na żywo, a co innego nagrywać wideo. Nie bądź leniwy – czas spędzony na pisaniu zwróci się wielokrotnie.
Oto mój format nagrywania. Liczba w tytule jest równa numerowi slajdu, przerwy są zaznaczone na czerwono. Do przygotowania nadaje się każdy edytor, ale lepiej jest wziąć pełnoprawny edytor tekstu - na przykład OnlyOffice.
Głos nad slajdami
Cóż mogę powiedzieć - włącz mikrofon i pisz :)
Doświadczenie pokazuje, że jakość nagrania nawet z najtańszego mikrofonu zewnętrznego jest nieporównywalnie lepsza niż z wbudowanego mikrofonu laptopa. Jeśli zależy Ci na dobrym sprzęcie to polecam
Do nagrywania użyłem rejestrator dźwięku – bardzo prosta aplikacja do nagrywania dźwięku. Możesz to wziąć na przykład tutaj:
sudo add-apt-repository ppa:audio-recorder/ppa
sudo apt-get update
sudo apt-get install audio-recorder
Najważniejsze na tym etapie jest prawidłowe nazwanie plików. Nazwa musi składać się z numeru slajdu i numeru fragmentu. Fragmenty są ponumerowane liczbami nieparzystymi - 1, 3, 5 itd. Zatem dla slajdu, którego tekst pokazano na obrazku, zostaną utworzone dwa pliki: 002-1.mp3 и 002-3.mp3.
Jeśli nagrałeś wszystkie filmy na raz w cichym pomieszczeniu, nie musisz z nimi robić nic więcej. Jeśli nagrywałeś w kilku krokach, lepiej wyrównać poziom głośności:
mp3gain -r *.mp3
Narzędzia mp3gain Z jakiegoś powodu nie ma go w standardowych repozytoriach, ale możesz go pobrać tutaj:
sudo add-apt-repository ppa:flexiondotorg/audio
sudo apt-get update
sudo apt-get install mp3gain
Po tym wszystkim musisz nagrać kolejny plik z ciszą. Do niemych filmów konieczne jest dodanie ścieżki dźwiękowej: jeśli jeden film ma ścieżkę dźwiękową, a drugi nie, wówczas trudno jest skleić te filmy. Ciszę można nagrać z mikrofonu, ale lepiej utworzyć plik w edytorze Śmiałość. Długość pliku powinna wynosić co najmniej sekundę (możliwe jest więcej) i powinien mieć nazwę cisza.mp3
Przygotowywanie filmów przerywających
Tutaj wszystko ogranicza tylko Twoja wyobraźnia. Do edycji filmów możesz używać edytora Avidemux. Dawno, dawno temu znajdował się w standardowych repozytoriach, ale z jakiegoś powodu został usunięty. To nas nie powstrzyma:
sudo add-apt-repository ppa:ubuntuhandbook1/avidemux
sudo apt-get update
sudo apt-get install avidemux2.7-qt5
Instrukcji pracy z tym edytorem jest wiele w Internecie i w zasadzie wszystko jest tam intuicyjne. Ważne jest, aby spełnić kilka warunków.
Po pierwsze, rozdzielczość wideo musi odpowiadać docelowej rozdzielczości wideo. Aby to zrobić, musisz użyć dwóch filtrów w „wyjściowym wideo”: swsResize, aby zmienić rozdzielczość i „dodając pola”, aby przekształcić radziecki film „wąskiego formatu” w szeroki format. Wszystkie pozostałe filtry są opcjonalne. Przykładowo, jeśli ktoś nie rozumie, dlaczego wypowiedź pana Szarikowa znalazła się w omawianym fragmencie, korzystając z filtra „dodaj logo”, możesz nałożyć logo PostgreSQL na „Psie serce”.
Po drugie, wszystkie fragmenty muszą używać tej samej liczby klatek na sekundę. Używam 25 klatek na sekundę, bo mój aparat i stare radzieckie filmy tyle mi dają. Jeśli film, z którego wycinasz, został nakręcony z inną szybkością, użyj filtra Resample Video.
Po trzecie, wszystkie fragmenty muszą być skompresowane przy użyciu tego samego kodeka i zapakowane w tych samych pojemnikach. Dlatego w Avidemux dla formatu wybierz wideo – „MPEG4 AVC (x264)", dźwięk - "AAC (FAAC)", format wyjściowy - "Muxer MP4".
Po czwarte, ważne jest, aby poprawnie nazwać przycięte filmy. Nazwa pliku musi składać się z numeru slajdu i numeru fragmentu. Fragmenty numerowane są liczbami parzystymi, zaczynając od 2. Zatem dla omawianej klatki film z przerwą należy nazwać 002-2.mp4
Gdy filmy będą gotowe, musisz przenieść je do katalogu z fragmentami. Ustawienia avidemux różnią się od ustawień ffmpeg domyślnie z tajemniczymi parametrami tbr, tbn, tbc. Nie mają one wpływu na odtwarzanie, ale nie pozwalają na sklejanie filmów. Zatem przekodujmy:
for f in ???-?.mp4;
do
ffmpeg -hide_banner -y -i "${f}" -c copy -r 25 -video_track_timescale 12800 ../clips/$f
done
Strzelanie do wygaszaczy ekranu
Tutaj także wszystko jest proste: kręcisz na tle jakiegoś sprytnego schematu, a powstałe filmy umieszczasz w katalogu rec, a stamtąd przenieś go do katalogu z fragmentami. Zasady nazewnictwa są takie same jak w przypadku cudzysłowów przerwań, polecenie przekodowania wygląda następująco:
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
Jeśli planujesz rozpocząć wideo swoją przemową, nazwij ten fragment 000-1.mp4
Tworzenie ramek ze statycznych zdjęć
Czas edytować filmy ze statycznych obrazów i dźwięku. Odbywa się to za pomocą następującego skryptu:
#!/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
Należy pamiętać, że czas trwania pliku audio jest najpierw określany przez narzędzie soxi, a następnie edytowany jest film o wymaganej długości. Wszystkie zalecenia, które znalazłem, są prostsze: zamiast flagi -t ${czas trwania} używana jest flaga -najkrótszy. W rzeczywistości ffmpeg określa w przybliżeniu długość pliku mp3, a podczas edycji długość ścieżki audio może znacznie różnić się (o jedną lub dwie sekundy) od długości ścieżki wideo. Nie ma to znaczenia, jeśli cały film składa się z jednej klatki, ale gdy skleisz taki film z przerwami na granicy, pojawiają się niezwykle nieprzyjemne efekty zacinania się.
Innym sposobem określenia czasu trwania pliku mp3 jest użycie informacje o mp3. Ona też popełnia błędy i czasami ffmpeg daje więcej niż informacje o mp3, czasem jest na odwrót, czasem jedno i drugie kłamie – nie zauważyłem żadnej prawidłowości. I tu soxi działa poprawnie.
Aby zainstalować to przydatne narzędzie, wykonaj następujące czynności:
sudo apt-get install sox libsox-fmt-mp3
Tworzenie przejść pomiędzy slajdami
Przejście to krótki film, w którym jeden slajd zamienia się w drugi. Aby nakręcić takie filmy, robimy slajdy w parach i korzystamy z nich ImageMagick przekształcić jedno w drugie:
#!/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}
Z jakiegoś powodu chciałem, żeby slajd był porozrzucany kropkami, a potem z kropek składał się kolejny slajd i w tym celu napisałem skrypt o nazwie fade.pl Mający ImageMagick, prawdziwy użytkownik Linuksa stworzy dowolny efekt specjalny, ale jeśli komuś podoba się mój pomysł z rozpraszaniem, oto skrypt:
#!/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);
}
Montujemy gotowy film
Teraz mamy wszystkie fragmenty. Przejdź do katalogu Teledyski i zmontuj gotowy film za pomocą dwóch poleceń:
ls -1 ???-?.mp4 | gawk -e '{print "file " $0}' >list.txt
ffmpeg -y -hide_banner -f concat -i list.txt -c copy MOVIE.mp4
Miłego oglądania, wdzięcznym uczniom!
Źródło: www.habr.com