Video prednášky: unixovým spôsobom

Video prednášky: unixovým spôsobom
Karanténa je skvelý čas na to, aby ste sa niečo naučili. Ako však chápete, na to, aby sa niekto niečo naučil, musí niekto učiť. Ak máte prezentáciu, ktorú chcete poskytnúť miliónovému publiku a získať svetovú slávu, potom je tento článok určený práve vám. Tu nájdete pokyny krok za krokom, ako vytvoriť video z vašej prezentácie.

Zamietame spôsob nahrávania „audiokomentárov“ v PowerPointe a export prezentácie do videa ako triviálny a neposkytujúci ani desatinu možností potrebných pre skutočne skvelé video.

Najprv sa rozhodnime, aké rámy potrebujeme:

  1. Skutočné snímky s komentárom
  2. Výmena sklíčok
  3. Citáty z populárnych filmov
  4. Niekoľko rámov s tvárou lektora a jeho obľúbenou mačkou (voliteľné)

Vytvorenie adresárovej štruktúry

.
├── clipart
├── clips
├── rec
├── slide
└── sound

Účel adresárov v poradí zoradenia: filmy, z ktorých vytiahneme citáty (klipart), fragmenty nášho budúceho videa (klipy), videá z fotoaparátu (rec), diapozitívy vo forme obrázkov (slide), zvuk (zvuk).

Vytvorenie prezentácie na obrázkoch

Skutočnému červenookému používateľovi Linuxu nerobí prezentácia vo forme obrázkov žiadne problémy. Len pripomeniem, že dokument vo formáte pdf je možné analyzovať na obrázky pomocou príkazu

pdftocairo -png -r 128 ../lecture.pdf

Ak takýto príkaz neexistuje, nainštalujte balík sami Poppler-utils (návod pre Ubuntu; ak máte Arch, tak veľmi dobre viete, čo bezo mňa robiť).

Ďalej sa domnievam, že video je pripravené vo formáte HD Ready, teda 1280x720. Prezentácia s horizontálnym rozmerom 10 palcov vytvára presne túto veľkosť, keď je vyložená (pozri možnosť -r 128).

Príprava textu

Ak chcete vytvoriť naozaj skvelý materiál, váš prejav musí byť najprv napísaný. Tiež som si myslel, že ten text zvládnem bez prípravy, najmä preto, že mám dobré skúsenosti s prednášaním. Jedna vec je však hrať naživo a druhá vec je nahrať video. Nebuďte leniví – čas strávený písaním sa vám mnohonásobne vráti.

Video prednášky: unixovým spôsobom

Tu je môj formát záznamu. Číslo v nadpise sa rovná číslu snímky, prerušenia sú zvýraznené červenou farbou. Na prípravu je vhodný akýkoľvek editor, ale je lepšie vziať si plnohodnotný textový procesor - napr. OnlyOffice.

Hlas cez snímky

Čo môžem povedať - zapnite mikrofón a píšte :)

Prax ukazuje, že kvalita záznamu aj z toho najlacnejšieho externého mikrofónu je neporovnateľne lepšia ako zo vstavaného mikrofónu notebooku. Ak chcete kvalitné vybavenie, odporúčam tu je tento článok.

Na nahrávanie som použil nahrávač zvuku – veľmi jednoduchá aplikácia na nahrávanie zvuku. Môžete si to vziať napríklad tu:

sudo add-apt-repository ppa:audio-recorder/ppa
sudo apt-get update
sudo apt-get install audio-recorder

Hlavná vec v tomto kroku je správne pomenovať súbory. Názov musí pozostávať z čísla snímky a čísla fragmentu. Fragmenty sú očíslované nepárnymi číslami - 1, 3, 5 atď. Pre snímku, ktorej text je zobrazený na obrázku, sa teda vytvoria dva súbory: 002-1.mp3 и 002-3.mp3.

Ak ste nahrali všetky videá naraz v tichej miestnosti, už s nimi nemusíte nič robiť. Ak ste nahrávali v niekoľkých krokoch, je lepšie vyrovnať úroveň hlasitosti:

mp3gain -r *.mp3

Verejné služby zisk mp3 Z nejakého dôvodu nie je v štandardných úložiskách, ale môžete ho získať tu:

sudo add-apt-repository ppa:flexiondotorg/audio
sudo apt-get update
sudo apt-get install mp3gain

Po tomto všetkom musíte nahrať ďalší súbor s tichom. K tichým videám je potrebné pridať zvukovú stopu: ak jedno video má zvukovú stopu a druhé nie, potom je ťažké tieto videá zlepiť. Ticho je možné nahrávať z mikrofónu, ale je lepšie vytvoriť súbor v editore smelosť. Dĺžka súboru by mala byť aspoň sekunda (je možné aj viac) a mal by byť pomenovaný ticho.mp3

Príprava videí s prerušením

Tu je všetko obmedzené iba vašou predstavivosťou. Na úpravu videí môžete použiť editor Avidemux. Kedysi to bolo v štandardných úložiskách, ale potom bolo z nejakého dôvodu vystrihnuté. Toto nás nezastaví:

sudo add-apt-repository ppa:ubuntuhandbook1/avidemux
sudo apt-get update
sudo apt-get install avidemux2.7-qt5

Návodov na prácu s týmto editorom je na internete množstvo a v zásade je tam všetko intuitívne. Dôležité je splniť niekoľko podmienok.

Po prvé, rozlíšenie videa sa musí zhodovať s cieľovým rozlíšením videa. Aby ste to dosiahli, musíte vo „výstupnom videu“ použiť dva filtre: swsResize na zmenu rozlíšenia a „pridanie polí“ na premenu sovietskeho „úzkoformátového“ filmu na široký formát. Všetky ostatné filtre sú voliteľné. Napríklad, ak niekto nerozumie, prečo je vyhlásenie pána Sharikova v diskutovanom fragmente, pomocou filtra „pridať logo“ môžete logo PostgreSQL prekryť cez „Psie srdce“.

Po druhé, všetky fragmenty musia používať rovnakú snímkovú frekvenciu. Používam 25 snímok za sekundu, pretože môj fotoaparát a staré sovietske filmy mi toľko dávajú. Ak bol film, z ktorého striháte, natočený inou rýchlosťou, použite filter Prevzorkovať video.

Po tretie, všetky fragmenty musia byť komprimované rovnakým kodekom a zabalené do rovnakých obalov. Preto v Avidemux pre formát vyberte video – “Mpeg4 AVC (x264)", audio - "AAC (FAAC)", výstupný formát - "MP4 muxer".

Po štvrté, dôležité je správne pomenovať zostrihané videá. Názov súboru musí pozostávať z čísla snímky a čísla fragmentu. Fragmenty sú očíslované párnymi číslami, počnúc od 2. Preto pre diskutovanú snímku by sa video s prerušením malo nazývať 002-2.mp4

Keď sú videá pripravené, musíte ich preniesť do adresára s fragmentmi. nastavenie Avidemux sa líšia od nastavení ffmpeg štandardne so záhadnými parametrami tbr, tbn, tbc. Neovplyvňujú prehrávanie, ale neumožňujú zlepenie videí. Takže prekódujeme:

for f in ???-?.mp4;
do
  ffmpeg -hide_banner -y -i "${f}" -c copy -r 25 -video_track_timescale 12800 ../clips/$f
done

Strieľacie šetriče obrazovky

Aj tu je všetko jednoduché: natáčate na pozadí nejakej šikovnej schémy, výsledné videá vložíte do katalógu reca odtiaľ ho preneste do adresára s fragmentmi. Pravidlá pomenovania sú rovnaké ako pre úvodzovky prerušenia, príkaz na prekódovanie je nasledujúci:

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

Ak plánujete začať video svojou rečou, pomenujte tento fragment 000-1.mp4

Vytváranie rámov zo statických obrázkov

Je čas upraviť videá zo statických obrázkov a zvuku. To sa vykonáva pomocou nasledujúceho skriptu:

#!/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

Upozorňujeme, že trvanie zvukového súboru najskôr určí obslužný program soxia potom sa upraví video požadovanej dĺžky. Všetky odporúčania, ktoré som našiel, sú jednoduchšie: namiesto vlajky -t ${duration} používa sa vlajka -najkratšia. v skutočnosti ffmpeg určuje dĺžku mp3 veľmi približne a pri úprave sa dĺžka zvukovej stopy môže značne líšiť (o jednu alebo dve sekundy) od dĺžky video stopy. Nezáleží na tom, či sa celé video skladá z jednej snímky, ale keď prilepíte takéto video s prerušeniami na hranici, dochádza k mimoriadne nepríjemným efektom koktania.

Ďalším spôsobom, ako určiť trvanie súboru mp3, je použiť mp3 info. Aj ona robí chyby a občas ffmpeg dáva viac ako mp3 info, niekedy je to naopak, niekedy klamú obaja – nevšimol som si žiadny vzor. A tu soxi funguje správne.

Ak chcete nainštalovať tento užitočný nástroj, postupujte takto:

sudo apt-get install sox libsox-fmt-mp3

Vytváranie prechodov medzi snímkami

Prechod je krátke video, v ktorom sa jedna snímka zmení na druhú. Na vytvorenie takýchto videí robíme snímky v pároch a pomocou ImageMagick transformovať jedno na druhé:

#!/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 nejakého dôvodu som chcel, aby bola snímka rozptýlená bodkami a potom by sa ďalšia snímka zostavila z bodiek, a preto som napísal skript s názvom fade.pl Majúci ImageMagick, skutočný používateľ Linuxu vytvorí akýkoľvek špeciálny efekt, ale ak sa niekomu páči môj nápad s rozptylom, tu je skript:

#!/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);
}

Hotové video namontujeme

Teraz máme všetky fragmenty. Prejdite do katalógu klipy a zostavte hotový film pomocou dvoch príkazov:

ls -1 ???-?.mp4 | gawk -e '{print "file " $0}' >list.txt
ffmpeg -y -hide_banner -f concat -i list.txt -c copy MOVIE.mp4

Príjemné sledovanie vašich vďačných študentov!

Zdroj: hab.com

Pridať komentár