Videoforelesninger: unix way

Videoforelesninger: unix way
Karantene er en fantastisk tid for å lære noe. Men som du forstår, for at noen skal lære noe, må noen undervise. Hvis du har en presentasjon du vil gi til et publikum på millioner og få verdensomspennende berømmelse, så er denne artikkelen for deg. Her finner du trinnvise instruksjoner om hvordan du lager en video fra presentasjonen din.

Vi avviser veien for å spille inn "lydkommentarer" i PowerPoint og eksportere presentasjonen til video som triviell og ikke gi en tidel av egenskapene som trengs for en virkelig kul video.

Først, la oss bestemme hvilke rammer vi trenger:

  1. Selve lysbildene med voiceover
  2. Bytte lysbilder
  3. Sitater fra populære filmer
  4. Flere rammer med foreleserens ansikt og favorittkatten hans (valgfritt)

Opprette en katalogstruktur

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

Hensikten med katalogene i listerekkefølgen: filmer som vi vil trekke sitater fra (utklipp), fragmenter av vår fremtidige video (klipp), videoer fra kameraet (rec), lysbilder i form av bilder (lysbilde), lyd (lyd).

Lage en presentasjon i bilder

For en ekte rødøyde Linux-bruker, gir det ingen problemer å lage en presentasjon i form av bilder. La meg bare minne deg på at et dokument i pdf-format kan analyseres til bilder ved hjelp av kommandoen

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

Hvis det ikke finnes en slik kommando, installer pakken selv poppler-utils (instruksjoner for Ubuntu; hvis du har Arch, så vet du godt hva du skal gjøre uten meg).

Heretter tror jeg at videoen er utarbeidet i HD Ready-format, det vil si 1280x720. En presentasjon med en horisontal dimensjon på 10 tommer gir nøyaktig den størrelsen når den er avlastet (se alternativ -r 128).

Forbereder teksten

Hvis du vil lage virkelig flott materiale, må talen din skrives først. Jeg tenkte også at jeg kunne snakke teksten uten forberedelse, spesielt siden jeg har god erfaring med å forelese. Men det er én ting å opptre live, og en annen ting å spille inn en video. Ikke vær lat – tiden du bruker på å skrive vil lønne seg mange ganger.

Videoforelesninger: unix way

Her er opptaksformatet mitt. Tallet i tittelen er lik lysbildenummeret, avbruddene er uthevet i rødt. Enhver redaktør er egnet for forberedelse, men det er bedre å ta en fullverdig tekstbehandler - for eksempel, OnlyOffice.

Stemme over lysbildene

Hva kan jeg si - skru på mikrofonen og skriv :)

Erfaring viser at opptakskvaliteten selv fra den billigste eksterne mikrofonen er uforlignelig bedre enn fra den innebygde mikrofonen på en bærbar datamaskin. Ønsker du kvalitetsutstyr anbefaler jeg det denne artikkelen.

For opptak brukte jeg lydopptaker – en veldig enkel applikasjon for lydopptak. Du kan ta det for eksempel her:

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

Det viktigste på dette trinnet er å navngi filene riktig. Navnet må bestå av lysbildenummer og fragmentnummer. Fragmenter er nummerert med oddetall - 1, 3, 5, etc. Så for lysbildet hvis tekst vises på bildet, vil det bli opprettet to filer: 002-1.mp3 и 002-3.mp3.

Hvis du tok opp alle videoene samtidig i et stille rom, trenger du ikke gjøre noe mer med dem. Hvis du tok opp i flere trinn, er det bedre å utjevne volumnivået:

mp3gain -r *.mp3

verktøy mp3gain Av en eller annen grunn er det ikke i standardlagrene, men du kan få det her:

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

Etter alt dette må du ta opp en annen fil med stillhet. Det er nødvendig å legge til et lydspor til lydløse videoer: hvis en video har et lydspor og den andre ikke har det, er det vanskelig å lime disse videoene sammen. Stillhet kan tas opp fra en mikrofon, men det er bedre å lage en fil i redigeringsprogrammet Audacity. Fillengden bør være minst et sekund (mer er mulig), og den bør navngis stillhet.mp3

Forbereder avbruddsvideoer

Her er alt begrenset bare av fantasien din. Du kan bruke et redigeringsprogram til å redigere videoer Avidemux. Det var en gang i standardlagrene, men så ble det av en eller annen grunn kuttet ut. Dette stopper oss ikke:

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

Det er mange instruksjoner for å jobbe med denne editoren på Internett, og i prinsippet er alt intuitivt. Det er viktig å oppfylle flere vilkår.

Først må videooppløsningen samsvare med målvideooppløsningen. For å gjøre dette må du bruke to filtre i "utdatavideoen": swsResize for å endre oppløsningen og "legge til felt" for å gjøre en sovjetisk "smalt format"-film til et bredt format. Alle andre filtre er valgfrie. For eksempel, hvis noen ikke forstår hvorfor Mr. Sharikovs uttalelse er i fragmentet under diskusjon, ved å bruke "legg til logo"-filteret, kan du legge PostgreSQL-logoen på toppen av "Hundehjertet".

For det andre må alle fragmenter bruke samme bildefrekvens. Jeg bruker 25 bilder per sekund fordi kameraet og gamle sovjetiske filmer gir meg så mye. Hvis filmen du klipper fra ble tatt med en annen hastighet, bruk Resample Video-filteret.

For det tredje må alle fragmenter komprimeres med samme kodek og pakkes i de samme beholderne. Derfor i Avidemux for formatet, velg video – “MPEG4 AVC (x264)", lyd -"AAC (FAAC)", Utgående format - "MP4 Muxer'.

For det fjerde er det viktig å navngi de klippede videoene riktig. Filnavnet må bestå av lysbildenummeret og fragmentnummeret. Fragmenter er nummerert med partall, med start fra 2. For rammen under diskusjon bør videoen med avbruddet kalles 002-2.mp4

Etter at videoene er klare, må du overføre dem til katalogen med fragmenter. Innstillinger avidemux avvike fra innstillingene ffmpeg som standard med mystiske parametere tbr, tbn, tbc. De påvirker ikke avspillingen, men de tillater ikke at videoene limes sammen. Så la oss kode om:

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

Skyte skjermsparere

Også her er alt enkelt: du fotograferer på bakgrunn av et smart opplegg, legger de resulterende videoene i en katalog rec, og derfra overføre den til katalogen med fragmenter. Navnereglene er de samme som for avbruddssitater, omkodingskommandoen er som følger:

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

Hvis du planlegger å starte videoen med talen din, navngi dette fragmentet 000-1.mp4

Lage rammer fra statiske bilder

Det er på tide å redigere videoer fra statiske bilder og lyd. Dette gjøres med følgende skript:

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

Vær oppmerksom på at varigheten av lydfilen først bestemmes av verktøyet soxi, og deretter redigeres videoen med ønsket lengde. Alle anbefalingene jeg fant er enklere: i stedet for et flagg -t ${duration} flagget brukes - kortest. Faktisk ffmpeg bestemmer lengden på mp3 veldig omtrentlig, og under redigering kan lengden på lydsporet avvike sterkt (med ett eller to sekunder) fra lengden på videosporet. Dette spiller ingen rolle om hele videoen består av en enkelt ramme, men når du limer en slik video med avbrudd ved grensen, oppstår ekstremt ubehagelige stamming-effekter.

En annen måte å bestemme varigheten av en mp3-fil er å bruke mp3 info. Hun gjør feil også, og noen ganger ffmpeg gir mer enn mp3 info, noen ganger er det omvendt, noen ganger lyver de begge – jeg la ikke merke til noe mønster. Og her soxi fungerer riktig.

For å installere dette nyttige verktøyet, gjør du dette:

sudo apt-get install sox libsox-fmt-mp3

Gjør overganger mellom lysbilder

En overgang er en kort video der ett lysbilde blir til et annet. For å lage slike videoer tar vi lysbilder i par og bruker ImageMagick forvandle det ene til det andre:

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

Av en eller annen grunn ville jeg at lysbildet skulle være spredt med prikker, og så skulle neste lysbilde settes sammen fra prikkene, og for dette skrev jeg et skript som heter fade.pl Å ha ImageMagick, vil en ekte Linux-bruker lage en hvilken som helst spesiell effekt, men hvis noen liker ideen min med spredning, her er skriptet:

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

Vi monterer den ferdige videoen

Nå har vi alle fragmentene. Gå til katalogen klipp og sett sammen den ferdige filmen ved å bruke to kommandoer:

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

Kos deg med å se til dine takknemlige studenter!

Kilde: www.habr.com

Legg til en kommentar