
Карантинът е чудесно време да научите нещо ново. Но, както разбирате, за да научи някой нещо, трябва да има някой, който да учи. Ако имате презентация, с която искате да се представите пред милионна аудитория и да спечелите световна слава, тази статия е за вас. Тук ще намерите стъпка по стъпка инструкции как да превърнете презентацията си в видео.
Пътят за записване на „звукови коментари“ в PowerPoint и експортиране на презентацията в видео отбелязваме като тривиален и не предлагащ и десета част от възможностите, от които се нуждаем за наистина стойностен видеоклип.
Първо нека определим какви кадри ще ни трябват:
- Всъщност слайдовете с глас зад кадър
- Смяна на слайдовете
- Цитати-прекъсвания от популярни филми
- Няколко кадъра с лицето на лектора и любимия котак (по желание)
Създаваме структура на каталогите
.
├── clipart
├── clips
├── rec
├── slide
└── sound
Назначението на каталогите в реда на изброяването: филмите, от които ще взимаме цитатите (clipart), фрагменти от бъдещото видео (clips), записи от камерата (rec), слайдовете в изображения (slide), звук (sound).
Правим презентация в изображения
За истинския червенокос линукс потребител не е проблем да направи презентация под формата на изображения. Само напомням, че документ в PDF формат може да бъде разбит на изображения с командата
pdftocairo -png -r 128 ../lecture.pdfАко нямате такава команда, инсталирайте пакета poppler-utils (инструкции за Ubuntu; ако имате Arch, сигурно и без мен знаете какво да правите).
Тук и занапред считам, че видеото се подготвя в HD Ready формат, т.е. 1280×720. Презентацията, с ширина 10 инча, дава точно такъв размер при експортиране (вижте параметъра -r 128).
Подготвяме текста
Ако искате да направите наистина стойностен материал, речта ви трябва първо да бъде написана. И аз мислех, че мога да запиша текста без подготовка, особено след като имам добър опит в четенето на лекции. Но едно е да говорите на живо, а съвсем друго – да записвате видео. Не се мързете – времето, което ще похарчите за въвеждане на текста, ще се изплати многократно.

Ето моя формат за запис. Номера в заглавието съответстват на номера на слайда, с червено са отбелязани прекъсванията. За подготовка подхожда всякакъв редактор, но е по-добре да използвате пълноценен текстов процесор – например, OnlyOffice.
Озвучаваме слайдовете
Какво да кажем тук – включвате микрофона и записвате 🙂
Опитът показва, че качеството на записа дори с най-евтиния външен микрофон е несравнимо по-добро от това на вградения микрофон на лаптопа. Ако искате качествено оборудване, препоръчвам .
За записа използвах audio-recorder – съвсем просто приложение за запис на звук. Можете да го вземете, например, тук:
sudo add-apt-repository ppa:audio-recorder/ppa
sudo apt-get update
sudo apt-get install audio-recorderОсновното на тази стъпка е правилното именуване на файловете. Името трябва да се състои от номера на слайда и номера на фрагмента. Фрагментите се номерират с нечетни числа – 1, 3, 5 и т.н. Така, за слайда, текстът на който е показан на картинката, ще бъдат създадени два файла: 002-1.mp3 и 002-3.mp3.
Ако сте записали всичките видеа наведнъж в тихо помещение, след това не е необходимо да правите нищо с тях. Ако сте записвали на няколко пъти, по-добре е да изравните нивото на звука:
mp3gain -r *.mp3Утилити mp3gain поради някаква причина липсва в стандартните репозитории, но можете да я вземете тук:
sudo add-apt-repository ppa:flexiondotorg/audio
sudo apt-get update
sudo apt-get install mp3gainСлед всичко това трябва да запишете още един файл с тишина. Той е необходим, за да добавите звукова пътека в беззвучните видеа: ако в едно видео има звукова пътека, а в друго няма, то е трудно да се съединят тези видеа. Тишината може да бъде записана с микрофон, но по-добре е да създадете файл в редактора Audacity. Дължината на файла трябва да бъде не по-малка от секунда (може и повече), а да го наречете трябва silence.mp3
Готвим видеа-перебивки
Тук всичко е ограничено само от вашето въображение. За редактиране на видео можете да използвате редактора Avidemux. Някога той беше в стандартните репозитории, но после по някаква причина беше изтрит. Но това не ни спира:
sudo add-apt-repository ppa:ubuntuhandbook1/avidemux
sudo apt-get update
sudo apt-get install avidemux2.7-qt5В интернет има море от инструкции за работа с този редактор, а всъщност, всичко е интуитивно ясно. Важно е да се спазят няколко условия.
На първо място, разрешението на видеото трябва да съвпада с целевото разрешение на видеото. За това в "видео за изход" трябва да използвате два филтъра: swsResize за промяна на разрешението и "добавяне на полета", за да направите от съветския "узкоформатен" филм широк формат. Всички останали филтри – по желание. Например, ако някой не разбира, какво е изказването на г-н Шариков във обсъждания фрагмент, с помощта на филтъра "добави лого" можете да накладете логото на PostgreSQL върху "Собачье сердце".
На второ място, във всички фрагменти трябва да се използва съща честота на кадрите. Използвам 25 кадъра в секунда, защото толкова дава моята камера и старите съветски филми. Ако филмът, от който режете кадрите, е заснет с друга скорост, използвайте филтъра "пренумериране на видеото".
На трето място, всички фрагменти трябва да бъдат компресирани с един и същ кодек и опаковани в еднакви контейнери. Затова в Avidemux за формата изберете видео – "Mpeg4 AVC (x264)", аудио – "AAC (Faac)", изходен формат – "MP4 Muxer».
На четвърто място, важно е правилно да именувате изрязаните видеа. Името на файла трябва да се състои от номера на слайда и номера на фрагмента. Фрагментите се номерират с четни числа, започвайки от 2. Така, за разглеждания кадър роликът с преход трябва да се нарича 002-2.mp4
След като видеата са готови, трябва да ги прехвърлите в каталога с фрагменти. Настройките avidemux се различават от настройките ffmpeg по подразбиране с мистериозни параметри tbr, tbn, tbc. Те не влияят на възпроизвеждането, но не позволяват свързването на видеата. Затова кодирайте отново:
for f in ???-?.mp4;
do
ffmpeg -hide_banner -y -i "${f}" -c copy -r 25 -video_track_timescale 12800 ..\/clips\/$f
doneСнимаме заставки
Тук също всичко е просто: снимате се на фон на някаква умна схема, събирате получените видеа в каталога rec, а оттам ги прехвърляте в каталога с фрагменти. Правилата за именуване са същите като за цитатите-переходи, командата за препотискане е:
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
Ако планирате да започнете видеото със своето представяне, наречете този фрагмент 000-1.mp4
Правим кадри от статични изображения
Дойде време да монтираме видеа от статични изображения и звук. Прави се с този скрипт:
#!/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Имам предвид, че първо се определя продължителността на звуковия файл с утилитата soxi, а след това се монтира видео с необходимата дължина. Всички намерени от мен препоръки са по-прости: вместо флага -t ${duration} се използва флагът -shortest. Всъщност ffmpeg определя дължината на mp3 много приблизително, и при монтажа дължината на звуковата писта може да се различава значително (с една-две секунди) от дължината на видеопистата. Това няма значение, ако всичкото видео се състои от един единствен кадър, но при свързването на такова видео с преход, на границата възникват много неприятни ефекти с заекване.
Още един начин да определите продължителността на mp3 файла е да използвате mp3info. Тя също греши, и понякога ffmpeg дава повече, отколкото mp3info, понякога обратното, понякога и двамата лъжат – не забелязах закономерности. А ето, soxi работи коректно.
За да инсталирате този полезен инструмент, направете следното:
sudo apt-get install sox libsox-fmt-mp3Правим преходи между слайдове.
Преходът е кратко видео, в което един слайд се преобразува в друг. За да създадем такива видеа, взимаме слайдове по двойки и с помощта на imagemagick превръщаме един в друг:
#!/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}Някак си реших, че слайдът трябва да се разпадне на точки, а после от точките да се събере следващият слайд, и за това написах скрипт с името fade.pl Имайки imagemagick, истински линукс любител може да създаде всеки специален ефект, но ако на някого му харесва моята идея с разпадането, ето скрипта:
#!/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);
}Монтираме готовото видео.
Сега разполагаме с всички фрагменти. Преминаваме в каталога clips и събираме готовия филм с две команди:
ls -1 ???-?.mp4 | gawk -e '{print "file " $0}' >list.txt
ffmpeg -y -hide_banner -f concat -i list.txt -c copy MOVIE.mp4
Приятно гледане на вашите благодарни ученици!
Източник: habr.com
