Каранцін - цудоўны час, каб чаму-небудзь навучыцца. Аднак, як вы разумееце, каб нехта нечаму навучыўся, нехта павінен вучыць. Калі ў вас ёсць прэзентацыя, з якой вы хочаце выступіць перад мільённай аўдыторыяй, набыўшы сусветную славу, то гэты артыкул - для вас. Тут будзе пакрокавая інструкцыя, як з прэзентацыі зрабіць відэаролік.
Шлях запісу «гукавых каментароў» у 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.
Агучваем слайды
Што тут сказаць - уключаеце мікрафон і пішаце 🙂
Досвед паказвае, што якасць запісу нават з самага таннага вонкавага мікрафона непараўнальна лепш, чым са ўбудаванага мікрафона наўтбука. Калі жадаецца якаснага абсталявання, то рэкамендую
Для запісу я выкарыстоўваў аўдыёзапіс - Зусім простае прыкладанне для гуказапісу. Узяць яе можна, напрыклад, вось тут:
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
ўтыліты mp3 зноўку чамусьці няма ў стандартных рэпазітарах, але ўзяць яе можна тут:
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 Муксатар.
Па-чацвёртае, важна правільна назваць выразаныя ролікі. Імя файла павінна складацца з нумара слайда і нумара фрагмента. Фрагменты нумаруюцца цотнымі лікамі, пачынаючы з 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
Здымаем застаўкі
Тут таксама ўсё проста: здымаецеся на фоне якой-небудзь разумнай схемы, складаеце атрыманыя ролікі ў каталог запіс, а адтуль пераносіце ў каталог з фрагментамі. Правілы наймення - такія ж, як для цытат-перабіванняў, каманда перакадоўкі такая:
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
Які робіцца пераходы паміж слайдамі
Пераход - кароткі ролік, у якім адзін слайд ператвараецца ў іншы. Для выраба такіх ролікаў бярэм слайды парамі і пры дапамозе Вобраз ператвараем адзін у іншы:
#!/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 маючы Вобраз, сапраўдны лінуксоід скрэатывіт любы спецэфект, але калі камусьці падабаецца мая ідэя з рассыпаннем, то вось скрыпт:
#!/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);
}
Мантаваны гатовы ролік
Вось зараз у нас ёсць усе фрагменты. Пераходзім у каталог кліпсы і збіраем гатовы фільм двума камандамі:
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