Video predavanja: Unix način

Video predavanja: Unix način
Karantena je divno vrijeme da se nešto nauči. Međutim, kao što razumete, da bi neko nešto naučio, neko mora da podučava. Ako imate prezentaciju koju želite održati milionskoj publici i steći svjetsku slavu, onda je ovaj članak za vas. Ovdje ćete pronaći upute korak po korak kako napraviti video iz svoje prezentacije.

Put snimanja "audio komentara" u PowerPointu i izvoza prezentacije u video odbacujemo kao trivijalan i ne pruža desetinu mogućnosti potrebnih za zaista cool video.

Prvo, odlučimo koji nam okviri trebaju:

  1. Stvarni slajdovi sa govorom
  2. Promjena slajdova
  3. Citati iz popularnih filmova
  4. Nekoliko okvira sa licem predavača i njegovom omiljenom mačkom (opciono)

Kreiranje strukture direktorija

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

Svrha direktorija po redoslijedu nabrajanja: filmovi iz kojih ćemo izvlačiti citate (klipart), fragmenti našeg budućeg videa (klipovi), video zapisi s kamere (rec), slajdovi u obliku slika (slajd), zvuk (zvuk).

Izrada prezentacije u slikama

Za pravog korisnika Linuxa s crvenim očima izrada prezentacije u obliku slika ne predstavlja nikakav problem. Samo da vas podsjetim da se dokument u pdf formatu može raščlaniti na slike pomoću naredbe

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

Ako ne postoji takva naredba, sami instalirajte paket poppler-utils (uputstva za Ubuntu; ako imate Arch, onda savršeno dobro znate šta da radite bez mene).

Ovdje i dalje vjerujem da je video pripremljen u HD Ready formatu, odnosno 1280x720. Prezentacija s horizontalnom veličinom od 10 inča daje upravo ovu veličinu kada je istovarena (pogledajte opciju -r 128).

Priprema teksta

Ako želite da napravite zaista sjajan materijal, vaš govor prvo treba da bude napisan. Takođe sam mislio da mogu da govorim tekst bez pripreme, pogotovo što imam dobro iskustvo u predavanjima. Ali jedno je nastupiti uživo, a drugo snimiti video. Ne budite lijeni – vrijeme provedeno u kucanju će se višestruko isplatiti.

Video predavanja: Unix način

Evo mog formata snimanja. Broj u naslovu jednak je broju slajda, prekidi su označeni crvenom bojom. Svaki uređivač je prikladan za pripremu, ali bolje je uzeti punopravni program za obradu teksta - na primjer, OnlyOffice.

Glas preko slajdova

Šta reći - upali mikrofon i piši :)

Iskustvo pokazuje da je kvalitet snimanja čak i sa najjeftinijeg eksternog mikrofona neuporedivo bolji nego sa ugrađenog mikrofona laptopa. Ako zelite kvalitetnu opremu, preporucujem evo ovog članka.

Za snimanje sam koristio audio-snimač – vrlo jednostavna aplikacija za snimanje zvuka. Možete ga uzeti, na primjer, ovdje:

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

Glavna stvar u ovom koraku je pravilno imenovati datoteke. Naziv se mora sastojati od broja slajda i broja fragmenta. Fragmenti su numerisani neparnim brojevima - 1, 3, 5, itd. Dakle, za slajd, čiji je tekst prikazan na slici, biće kreirane dve datoteke: 002-1.mp3 и 002-3.mp3.

Ako ste sve video zapise snimili odjednom u tihoj prostoriji, ne morate ništa dalje raditi s njima. Ako ste snimali u nekoliko koraka, bolje je izjednačiti nivo jačine zvuka:

mp3gain -r *.mp3

Komunalije mp3gain Iz nekog razloga nije u standardnim spremištima, ali ga možete dobiti ovdje:

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

Nakon svega ovoga, trebate snimiti još jednu datoteku u tišini. Nečujnim video zapisima je potrebno dodati zvučni zapis: ako jedan video ima zvučni zapis, a drugi nema, onda je teško zalijepiti te video zapise zajedno. Tišina se može snimiti mikrofonom, ali je bolje napraviti datoteku u editoru smjelost. Dužina fajla treba da bude najmanje sekundu (moguće je i više), i treba da bude imenovan tišina.mp3

Priprema video snimaka prekida

Ovdje je sve ograničeno samo vašom maštom. Za uređivanje videa možete koristiti uređivač Avidemux. Nekada je bio u standardnim repozitorijumima, ali je onda iz nekog razloga izbačen. Ovo nas neće zaustaviti:

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

Na Internetu postoji mnogo uputstava za rad s ovim uređivačem i u principu je sve intuitivno. Važno je ispuniti nekoliko uslova.

Prvo, video rezolucija mora odgovarati ciljnoj video rezoluciji. Da biste to učinili, trebate upotrijebiti dva filtera u "izlaznom videu": swsResize za promjenu rezolucije i "dodavanje polja" da sovjetski film "uskog formata" pretvorite u široki format. Svi ostali filteri su opcioni. Na primjer, ako neko ne razumije zašto se izjava gospodina Šarikova nalazi u fragmentu o kojem se raspravlja, koristeći filter „dodaj logo“, možete prekriti PostgreSQL logo na vrh „Psećeg srca“.

Drugo, svi fragmenti moraju koristiti istu brzinu kadrova. Koristim 25 kadrova u sekundi jer mi moja kamera i stari sovjetski filmovi daju toliko. Ako je film iz kojeg izrezujete snimljen drugom brzinom, koristite filter Resample Video.

Treće, svi fragmenti moraju biti komprimirani istim kodekom i upakovani u iste kontejnere. Stoga, u Avidemux za format odaberite video – “MPEG4 AVC (x264)", audio - "AAC (FAAC)", izlazni format - "MP4 Muxer".

Četvrto, važno je pravilno imenovati izrezane video zapise. Ime datoteke mora se sastojati od broja slajda i broja fragmenta. Fragmenti se numerišu parnim brojevima, počevši od 2. Dakle, za okvir o kojem se raspravlja, video sa prekidom treba nazvati 002-2.mp4

Nakon što su videozapisi spremni, trebate ih prenijeti u direktorij s fragmentima. Postavke avidemux razlikuju od postavki ffmpeg po defaultu s misterioznim parametrima tbr, tbn, tbc. Ne utiču na reprodukciju, ali ne dozvoljavaju da se video zapisi zalijepe zajedno. Pa hajde da prekodujemo:

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

Snimanje screensaver-a

I ovdje je sve jednostavno: snimate u pozadini neke pametne sheme, stavite rezultirajuće videozapise u katalog rec, a odatle ga prenesite u direktorij s fragmentima. Pravila imenovanja su ista kao i za prekidne navodnike, naredba za kodiranje je sljedeća:

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

Ako planirate započeti video svojim govorom, nazovite ovaj fragment 000-1.mp4

Izrada okvira od statičnih slika

Vrijeme je za uređivanje videozapisa iz statične slike i zvuka. Ovo se radi sa sljedećom skriptom:

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

Imajte na umu da trajanje audio datoteke prvo određuje uslužni program soxi, a zatim se montira video zapis potrebne dužine. Sve preporuke koje sam pronašao su jednostavnije: umjesto zastavice -t ${duration} koristi se zastava -najkraći. Zapravo ffmpeg određuje dužinu mp3 vrlo približno, a tokom montaže, dužina audio zapisa može se jako razlikovati (za jednu ili dvije sekunde) od dužine video zapisa. Nije bitno ako se cijeli video sastoji od jednog kadra, ali kada takav video zalijepite sa prekidima na granici, nastaju izuzetno neugodni efekti mucanja.

Drugi način za određivanje trajanja mp3 datoteke je korištenje mp3info. I ona griješi, i to ponekad ffmpeg daje više od mp3info, nekad je obrnuto, nekad oboje lažu - nisam primjetila nikakav obrazac. I ovdje soxi radi ispravno.

Da biste instalirali ovaj korisni uslužni program, učinite ovo:

sudo apt-get install sox libsox-fmt-mp3

Pravljenje prijelaza između slajdova

Prijelaz je kratak video u kojem se jedan slajd pretvara u drugi. Da bismo napravili takve video zapise, uzimamo slajdove u parovima i koristeći ImageMagick transformisati jedno u drugo:

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

Iz nekog razloga sam želio da slajd bude razbacan tačkama, a onda bi se sljedeći slajd sastavio od tačaka, i za to sam napisao skriptu pod nazivom fade.pl Imati ImageMagick, pravi Linux korisnik će napraviti bilo kakav poseban efekat, ali ako se nekome sviđa moja ideja sa raspršivanjem, evo skripte:

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

Montiramo gotov video

Sada imamo sve fragmente. Idi u katalog isječci i sastavite gotov film koristeći dvije naredbe:

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

Uživajte u gledanju svojim zahvalnim studentima!

izvor: www.habr.com

Dodajte komentar