Video predavanja: unix način

Video predavanja: unix način
Karantena je divno vrijeme da nešto naučite. Međutim, kao što razumijete, da bi netko nešto naučio, netko mora podučavati. Ako imate prezentaciju koju želite održati pred milijunskom publikom i steći svjetsku slavu, onda je ovaj članak za vas. Ovdje ćete pronaći upute korak po korak o tome kako napraviti video iz svoje prezentacije.

Odbacujemo način snimanja "audio komentara" u PowerPointu i izvoz prezentacije u video kao trivijalan i ne pruža ni desetinu mogućnosti potrebnih za uistinu cool video.

Prvo, odlučimo koji nam okviri trebaju:

  1. Stvarni slajdovi s glasom
  2. promjena slajdova
  3. Citati iz popularnih filmova
  4. Nekoliko okvira s licem predavača i njegovom omiljenom mačkom (po izboru)

Izrada strukture imenika

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

Svrha direktorija po redoslijedu navođenja: filmovi iz kojih ćemo izvlačiti citate (clipart), fragmenti našeg budućeg videa (isječci), video zapisi s kamere (rec), slajdovi u obliku slika (slide), zvuk (zvuk).

Izrada prezentacije u slikama

Za pravog crvenookog korisnika Linuxa, 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 (upute za Ubuntu; ako imate Arch, onda savršeno dobro znate što ćete bez mene).

Ovdje i dalje, vjerujem da je video pripremljen u HD Ready formatu, tj. 1280x720. Prezentacija s vodoravnom veličinom od 10 inča daje točno ovu veličinu kada je neučitana (pogledajte parametar -r 128).

Priprema teksta

Ako želite napraviti stvarno izvrstan materijal, svoj govor prvo morate napisati. Također sam mislio da mogu govoriti tekst bez pripreme, pogotovo jer imam dobro iskustvo u predavanju. Ali jedno je nastupiti uživo, a drugo snimiti spot. Ne budite lijeni - vrijeme utrošeno na tipkanje višestruko će vam se isplatiti.

Video predavanja: unix način

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

Glas preko slajdova

Što reći - uključi mikrofon i piši :)

Iskustvo pokazuje da je kvaliteta snimanja i s najjeftinijeg vanjskog mikrofona neusporedivo bolja nego s ugrađenog mikrofona prijenosnog računala. Ako želite kvalitetnu opremu, preporučam ovaj članak.

Za snimanje sam koristio snimač zvuka – 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 ispravno imenovati datoteke. Naziv se mora sastojati od broja slajda i broja fragmenta. Fragmenti su numerirani neparnim brojevima - 1, 3, 5 itd. Dakle, za slajd, čiji je tekst prikazan na slici, stvorit će se dvije datoteke: 002-1.mp3 и 002-3.mp3.

Ako ste snimili sve videozapise odjednom u tihoj prostoriji, ne morate više ništa raditi s njima. Ako ste snimali u nekoliko koraka, bolje je izjednačiti razinu glasnoće:

mp3gain -r *.mp3

Komunalije mp3gain Iz nekog razloga nije u standardnim spremištima, ali možete ga nabaviti 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 s tišinom. Nečujnim videozapisima potrebno je dodati zvučni zapis: ako jedan videozapis ima zvučni zapis, a drugi ne, tada je te videozapise teško spojiti. Tišina se može snimiti iz mikrofona, ali je bolje kreirati datoteku u editoru smjelost. Datoteka bi trebala biti duljine najmanje sekundu (moguće je i više) i trebala bi imati naziv tišina.mp3

Priprema videozapisa s prekidima

Ovdje je sve ograničeno samo vašom maštom. Za uređivanje videozapisa možete koristiti uređivač Avidemux. Jednom davno bio je u standardnim spremištima, ali je onda iz nekog razloga izrezan. 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 puno uputa za rad s ovim uređivačem iu principu je sve intuitivno. Važno je ispuniti nekoliko uvjeta.

Prvo, video rezolucija mora odgovarati ciljanoj video rezoluciji. Da biste to učinili, trebate upotrijebiti dva filtra u "izlaznom videu": swsResize za promjenu rezolucije i "dodavanje polja" za pretvaranje sovjetskog filma "uskog formata" u široki format. Svi ostali filtri su izborni. Na primjer, ako netko ne razumije zašto je izjava gospodina Sharikova u fragmentu o kojem se raspravlja, pomoću filtra "dodaj logotip" možete staviti PostgreSQL logo na vrh "Psećeg srca".

Drugo, svi fragmenti moraju koristiti istu brzinu kadrova. Koristim 25 sličica u sekundi jer mi toliko daju moja kamera i stari sovjetski filmovi. Ako je film iz kojeg režete snimljen drugom brzinom, upotrijebite filtar Resample Video.

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

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

Nakon što su videozapisi spremni, morate ih prenijeti u direktorij s fragmentima. postavke avidemux razlikuju od postavki ffmpeg prema zadanim postavkama s misterioznim parametrima tbr, tbn, tbc. Ne utječu na reprodukciju, ali ne dopuštaju lijepljenje videozapisa. Dakle, rekodirajmo:

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

Snimanje čuvara zaslona

Ovdje je također sve jednostavno: snimate u pozadini neke pametne sheme, stavite dobivene videozapise u katalog rec, a odatle ga prenijeti u imenik s fragmentima. Pravila imenovanja su ista kao za navodnike prekida, naredba za rekodiranje 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, dajte naziv ovom fragmentu 000-1.mp4

Izrada okvira od statičnih slika

Vrijeme je za uređivanje videozapisa iz statičnih slika i zvuka. To se radi pomoću sljedeće skripte:

#!/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 potom se montira video zapisa potrebne dužine. Sve preporuke koje sam pronašao su jednostavnije: umjesto zastavice -t ${trajanje} koristi se zastava - najkraći... Zapravo ffmpeg vrlo približno određuje duljinu mp3, a tijekom montaže duljina audio zapisa može se jako razlikovati (za jednu ili dvije sekunde) od duljine video zapisa. To nije važno ako se cijeli video sastoji od jednog okvira, ali kada zalijepite takav video s prekidima na granici, dolazi do krajnje neugodnih efekata zastajkivanja.

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, ponekad je obrnuto, ponekad oboje lažu - nisam primijetio nikakav obrazac. I ovdje soxi radi ispravno.

Da biste instalirali ovaj korisni uslužni program, učinite sljedeće:

sudo apt-get install sox libsox-fmt-mp3

Izrada prijelaza između slajdova

Prijelaz je kratki video u kojem se jedan slajd pretvara u drugi. Za izradu takvih videa uzimamo slajdove u parovima i koristimo ih ImageMagick pretvarati 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 točkicama, a zatim da se sljedeći slajd sastavi od točkica, i za to sam napisao skriptu pod nazivom izblijediti.pl Imajući ImageMagick, pravi Linux korisnik će stvoriti neki poseban efekt, ali ako se nekome sviđa moja ideja s 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 na katalog isječci i sastaviti gotov film pomoću 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 učenicima!

Izvor: www.habr.com

Dodajte komentar