Videoloengud: unix way

Videoloengud: unix way
Karantiin on suurepärane aeg millegi õppimiseks. Kuid nagu aru saate, selleks, et keegi saaks midagi õppida, peab keegi õpetama. Kui teil on esitlus, mida soovite esitada miljonilisele vaatajaskonnale ja koguda ülemaailmset kuulsust, siis see artikkel on teie jaoks. Siit leiate samm-sammult juhised, kuidas oma esitlusest videot teha.

Peame PowerPointis "helikommentaaride" salvestamise ja esitluse videoks eksportimise teest tühiseks ja ei paku kümnendikku tõeliselt laheda video jaoks vajalikest võimalustest.

Kõigepealt otsustame, milliseid raame vajame:

  1. Tegelikud slaidid koos kõnega
  2. slaidivahetus
  3. Tsitaadid populaarsetest filmidest
  4. Mitu kaadrit õppejõu näo ja tema lemmikkassiga (valikuline)

Kataloogistruktuuri loomine

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

Kataloogide eesmärk loetlemise järjekorras: filmid, millest tõmbame tsitaate (lõik), meie tulevase video fragmendid (klipid), videod kaamerast (rec), slaidid piltide kujul (slaid), heli (heli).

Piltidena esitluse tegemine

Tõelisele punasilmsele Linuxi kasutajale ei valmista piltidena esitluse tegemine probleeme. Tuletan teile meelde, et pdf-vormingus dokumenti saab käsu abil piltideks sõeluda

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

Kui sellist käsku pole, installige pakett ise poppler-utils (Ubuntu juhised; kui teil on Arch, siis teate suurepäraselt, mida ilma minuta teha).

Siin ja edasi usun, et video on koostatud HD Ready formaadis ehk 1280x720. Esitlus, mille horisontaalne suurus on 10 tolli, annab mahalaadimisel täpselt selle suuruse (vt suvandit -r 128).

Teksti ettevalmistamine

Kui soovite teha tõeliselt suurepärast materjali, tuleb kõigepealt oma kõne kirjutada. Arvasin ka, et võin teksti rääkida ilma ettevalmistuseta, seda enam, et mul on hea loengukogemus. Üks asi on aga otseesinemine ja teine ​​asi video salvestamine. Ärge olge laisk – tippimisele kulunud aeg tasub end mitmekordselt ära.

Videoloengud: unix way

Siin on minu salvestusformaat. Pealkirjas olev number võrdub slaidi numbriga, katkestused on punasega esile tõstetud. Ettevalmistamiseks sobib iga redaktor, kuid parem on võtta täisväärtuslik tekstitöötlusprogramm - näiteks AinultOffice.

Hääl üle slaidide

Mis ma oskan öelda - lülita mikrofon sisse ja kirjuta :)

Kogemus näitab, et salvestuskvaliteet ka kõige odavamast välismikrofonist on võrreldamatult parem kui sülearvuti sisseehitatud mikrofonil. Kui soovid kvaliteetset varustust, siis soovitan siin on see artikkel.

Salvestamiseks kasutasin helisalvesti - väga lihtne rakendus heli salvestamiseks. Saate selle võtta näiteks siit:

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

Peamine asi selles etapis on failidele õige nime andmine. Nimi peab koosnema slaidi numbrist ja fragmendi numbrist. Fragmendid on nummerdatud paaritute numbritega - 1, 3, 5 jne. Seega luuakse slaidi jaoks, mille tekst on pildil, kaks faili: 002–1.mp3 и 002–3.mp3.

Kui salvestasite kõik videod korraga vaikses ruumis, ei pea te nendega midagi enam tegema. Kui salvestasite mitme sammuna, on parem helitugevus võrdsustada:

mp3gain -r *.mp3

Utiliidid mp3 võimendus Mingil põhjusel pole see tavalistes hoidlates, kuid saate selle siit:

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

Pärast kõike seda peate salvestama veel ühe faili vaikides. Vaiksetele videotele on vaja lisada heliriba: kui ühel videol on heliriba ja teisel mitte, siis on neid videoid keeruline kokku liimida. Vaikust saab salvestada mikrofonist, kuid parem on luua fail redaktoris hulljulgus. Faili pikkus peaks olema vähemalt sekund (võimalik on ka rohkem) ja sellele tuleks anda nimi vaikus.mp3

Katkestuste videote ettevalmistamine

Siin piirab kõike ainult teie kujutlusvõime. Videote redigeerimiseks saate kasutada redaktorit Avidemux. Kunagi oli see standardhoidlates, aga siis miskipärast lõigati välja. See ei peata meid:

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

Internetis on selle redaktoriga töötamiseks palju juhiseid ja põhimõtteliselt on kõik intuitiivne. Oluline on täita mitu tingimust.

Esiteks peab video eraldusvõime vastama sihtvideo eraldusvõimele. Selleks tuleb “väljundvideos” kasutada kahte filtrit: swsResize eraldusvõime muutmiseks ja “väljade lisamine”, et muuta nõukogude “kitsaformaadiline” film laiformaadiks. Kõik muud filtrid on valikulised. Näiteks kui keegi ei saa aru, miks härra Šarikovi avaldus on arutlusel olevas fragmendis, saate filtri "lisa logo" kasutades asetada PostgreSQL-i logo "Koera südame" peale.

Teiseks peavad kõik fragmendid kasutama sama kaadrisagedust. Ma kasutan 25 kaadrit sekundis, sest mu kaamera ja vanad nõukogude filmid annavad mulle nii palju. Kui filmi, millest lõikate, tehti teistsuguse kiirusega, kasutage filtrit Resample Video.

Kolmandaks, kõik fragmendid tuleb tihendada sama koodekiga ja pakendada samadesse konteineritesse. Seetõttu sisse Avidemux vormingu jaoks valige video – "MPEG4 AVC (x264)", heli - "AAC (FAAC)", väljundvorming - "MP4 mukser'.

Neljandaks on oluline lõigatud videod õigesti nimetada. Faili nimi peab koosnema slaidi numbrist ja fragmendi numbrist. Fragmendid nummerdatakse paarisnumbritega, alustades 2-st. Seega tuleks arutluse all oleva kaadri puhul katkestusega video nimetada 002–2.mp4

Kui videod on valmis, peate need koos fragmentidega kataloogi üle kandma. Seaded avidemux seadetest erinevad ffmpeg vaikimisi salapäraste parameetritega tbr, tbn, tbc. Need ei mõjuta taasesitust, kuid ei võimalda videoid kokku liimida. Nii et kodeerime uuesti:

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

Ekraanisäästjate pildistamine

Ka siin on kõik lihtne: pildistate mõne nutika skeemi taustal, pange saadud videod kataloogi rec, ja sealt koos fragmentidega kataloogi üle kanda. Nimetamisreeglid on samad, mis katkestusjutumärkide puhul, ümberkodeerimise käsk on järgmine:

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

Kui kavatsete videot oma kõnega alustada, andke sellele fragmendile nimi 000–1.mp4

Staatilistest piltidest raamide valmistamine

On aeg redigeerida videoid staatilisest pildist ja helist. Seda tehakse järgmise skriptiga:

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

Pange tähele, et helifaili kestuse määrab kõigepealt utiliit soxija seejärel töödeldakse vajaliku pikkusega videot. Kõik minu leitud soovitused on lihtsamad: lipu asemel -t ${duration} lippu kasutatakse - kõige lühem... Tegelikult ffmpeg määrab mp3 pikkuse väga ligikaudselt ja monteerimise ajal võib heliraja pikkus oluliselt erineda (ühe või kahe sekundi võrra) videoraja pikkusest. See ei oma tähtsust, kui kogu video koosneb ühest kaadrist, kuid kui liimida selline video katkestustega piirile, tekivad äärmiselt ebameeldivad kogelevad efektid.

Teine viis mp3-faili kestuse määramiseks on kasutada mp3 info. Ta teeb ka vigu ja mõnikord ffmpeg annab rohkem kui mp3 info, vahel on vastupidi, vahel valetavad mõlemad – ma ei märganud ühtegi mustrit. Ja siin soxi töötab korrektselt.

Selle kasuliku utiliidi installimiseks tehke järgmist.

sudo apt-get install sox libsox-fmt-mp3

Slaidide vahel üleminekute tegemine

Üleminek on lühike video, milles üks slaid muutub teiseks. Selliste videote tegemiseks võtame slaidid paarikaupa ja kasutades imagemagick muuda üks teiseks:

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

Millegipärast tahtsin, et slaid oleks täppidega laiali ja siis saaks punktidest järgmine slaid kokku pandud ja selleks kirjutasin skripti nn. fade.pl Võttes imagemagick, loob tõeline Linuxi kasutaja mis tahes eriefekti, aga kui kellelegi minu idee hajutamise osas meeldib, siis siin on 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);
}

Paigaldame valmis video

Nüüd on meil kõik killud. Minge kataloogi klambrid ja pane valmis kile kokku, kasutades kahte käsku:

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

Nautige vaatamist oma tänulikele õpilastele!

Allikas: www.habr.com

Lisa kommentaar