Vaizdo paskaitos: unix būdas

Vaizdo paskaitos: unix būdas
Karantinas – puikus metas ko nors išmokti. Tačiau, kaip supranti, kad kažkas ko nors išmoktų, kažkas turi ir mokyti. Jei turite pristatymą, kurį norite pristatyti milijoninei auditorijai ir pelnyti pasaulinę šlovę, šis straipsnis skirtas jums. Čia rasite nuoseklias instrukcijas, kaip sukurti vaizdo įrašą iš pristatymo.

„Garso komentarų“ įrašymo „PowerPoint“ ir pristatymo eksportavimo į vaizdo įrašą būdą atmetame kaip nereikšmingą ir nesuteikiame dešimtadalio galimybių, reikalingų tikrai šauniam vaizdo įrašui.

Pirmiausia nuspręskime, kokių rėmelių mums reikia:

  1. Tikrosios skaidrės su balsu
  2. Skaidrių keitimas
  3. Citatos iš populiarių filmų
  4. Keli kadrai su dėstytojo veidu ir jo mėgstama kate (nebūtina)

Katalogų struktūros kūrimas

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

Katalogų paskirtis sąrašo tvarka: filmai, iš kurių trauksime citatas (iškarpas), mūsų būsimo vaizdo įrašo fragmentai (klipai), vaizdo įrašai iš fotoaparato (rec), skaidrės paveikslėlių pavidalu (skaidrių), garsas (garsas).

Pristatymo kūrimas paveikslėliuose

Tikram raudonų akių „Linux“ vartotojui pristatymo kūrimas paveikslėlių pavidalu nesukelia jokių problemų. Leiskite tik priminti, kad pdf formato dokumentą galima išanalizuoti į vaizdus naudojant komandą

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

Jei tokios komandos nėra, įdiekite paketą patys popleris-utils (instrukcijos Ubuntu; jei turite Arch, tada puikiai žinote, ką daryti be manęs).

Čia ir toliau manau, kad vaizdo įrašas paruoštas HD Ready formatu, t.y 1280x720. Pristatymas, kurio horizontalus dydis yra 10 colių, suteikia būtent tokį dydį iškraunant (žr. parinktį -r 128).

Teksto ruošimas

Jei norite sukurti tikrai puikią medžiagą, pirmiausia turite parašyti savo kalbą. Taip pat pagalvojau, kad tekstą galiu kalbėti ir be pasiruošimo, juolab, kad turiu gerą paskaitų skaitymo patirtį. Tačiau vienas dalykas yra koncertuoti gyvai, o kitas – įrašyti vaizdo įrašą. Nepatingėkite – laikas, praleistas spausdinant, atsipirks daug kartų.

Vaizdo paskaitos: unix būdas

Štai mano įrašymo formatas. Skaičius pavadinime lygus skaidrės numeriui, pertraukos paryškintos raudonai. Pasiruošimui tinka bet koks redaktorius, tačiau geriau pasiimti visavertę tekstų rengyklę - pavyzdžiui, OnlyOffice.

Balsas per skaidres

Ką aš galiu pasakyti - įsijunk mikrofoną ir rašyk :)

Patirtis rodo, kad net iš pigiausio išorinio mikrofono įrašymo kokybė yra nepalyginamai geresnė nei iš nešiojamojo kompiuterio įmontuoto mikrofono. Jei norite kokybiškos įrangos, rekomenduoju čia yra šis straipsnis.

Įrašymui naudojau garso įrašymo įrenginys – labai paprasta garso įrašymo programa. Galite pasiimti, pavyzdžiui, čia:

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

Pagrindinis dalykas šiame žingsnyje yra teisingai pavadinti failus. Pavadinimą turi sudaryti skaidrės numeris ir fragmento numeris. Fragmentai sunumeruoti nelyginiais skaičiais - 1, 3, 5 ir tt Taigi skaidrei, kurios tekstas parodytas paveikslėlyje, bus sukurti du failai: 002-1.mp3 и 002-3.mp3.

Jei visus vaizdo įrašus įrašėte vienu metu ramioje patalpoje, jums nereikės nieko daugiau daryti su jais. Jei įrašėte keliais etapais, geriau išlyginti garsumo lygį:

mp3gain -r *.mp3

Komunalinės paslaugos „mp3gain“ Dėl tam tikrų priežasčių jo nėra standartinėse saugyklose, bet galite jį gauti čia:

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

Po viso šito reikia įrašyti kitą failą su tyla. Prie begarsių vaizdo įrašų būtina pridėti garso takelį: jei vienas vaizdo įrašas turi garso takelį, o kitas neturi, tuomet sunku šiuos vaizdo įrašus suklijuoti. Tylą galima įrašyti iš mikrofono, tačiau geriau susikurti failą redaktoriuje įžūlumas. Failo ilgis turi būti bent sekundė (galima ir daugiau), ir jis turi būti pavadintas tyla.mp3

Ruošiami pertraukimo vaizdo įrašai

Čia viską riboja tik jūsų vaizduotė. Vaizdo įrašams redaguoti galite naudoti redaktorių Avidemux. Kažkada jis buvo standartinėse saugyklose, bet tada kažkodėl buvo iškirptas. Tai mūsų nesustabdys:

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

Internete yra daug instrukcijų, kaip dirbti su šiuo redaktoriumi, ir iš esmės viskas yra intuityvu. Svarbu laikytis kelių sąlygų.

Pirma, vaizdo įrašo skiriamoji geba turi atitikti tikslinę vaizdo įrašo skiriamąją gebą. Norėdami tai padaryti, „išvesties vaizdo įraše“ turite naudoti du filtrus: „swsResize“, kad pakeistumėte skiriamąją gebą, ir „pridėtų laukų“, kad sovietinis „siauro formato“ filmas būtų paverstas plačiu formatu. Visi kiti filtrai yra neprivalomi. Pavyzdžiui, jei kas nors nesupranta, kodėl pono Šarikovo teiginys yra aptariamame fragmente, naudodami filtrą „pridėti logotipą“, galite uždėti PostgreSQL logotipą ant „Šuns širdies“.

Antra, visi fragmentai turi naudoti tą patį kadrų dažnį. Naudoju 25 kadrus per sekundę, nes tiek man suteikia fotoaparatas ir senos sovietinės juostos. Jei filmas, iš kurio iškarpote, buvo nufilmuotas kitu greičiu, naudokite filtrą „Resample Video“.

Trečia, visi fragmentai turi būti suspausti tuo pačiu kodeku ir supakuoti į tuos pačius konteinerius. Todėl į Avidemux formatui pasirinkite vaizdo įrašą – "„MPEG4 AVC“ (x264)", garso įrašas - "AAC (FAAC)", išvesties formatas - "„MP4 Muxer“".

Ketvirta, svarbu teisingai pavadinti iškirptus vaizdo įrašus. Failo pavadinimą turi sudaryti skaidrės numeris ir fragmento numeris. Fragmentai numeruojami lyginiais skaičiais, pradedant nuo 2. Taigi aptariamam kadrui vaizdo įrašas su pertraukimu turėtų būti vadinamas 002-2.mp4

Kai vaizdo įrašai bus paruošti, turite perkelti juos į katalogą su fragmentais. Nustatymai avidemux skiriasi nuo nustatymų ffmpeg pagal numatytuosius nustatymus su paslaptingais parametrais tbr, tbn, tbc. Jie neturi įtakos atkūrimui, tačiau neleidžia klijuoti vaizdo įrašų. Taigi perkoduokime:

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

Ekrano užsklandų fotografavimas

Čia taip pat viskas paprasta: fotografuojate kažkokios protingos schemos fone, įdedate gautus vaizdo įrašus į katalogą konst, o iš ten perkelkite į katalogą su fragmentais. Pavadinimo taisyklės yra tokios pačios kaip ir pertraukimo kabučių, perkodavimo komanda yra tokia:

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

Jei planuojate pradėti vaizdo įrašą savo kalba, pavadinkite šį fragmentą 000-1.mp4

Rėmelių kūrimas iš statinių paveikslėlių

Atėjo laikas redaguoti vaizdo įrašus iš statinių vaizdų ir garso. Tai daroma naudojant šį scenarijų:

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

Atminkite, kad garso failo trukmę pirmiausia nustato programa soxi, o tada redaguojamas reikiamo ilgio vaizdo įrašas. Visos mano rastos rekomendacijos paprastesnės: vietoj vėliavėlės -t ${duration} naudojama vėliava - trumpiausias. Faktiškai ffmpeg labai apytiksliai nustato mp3 ilgį, o redaguojant garso takelio ilgis gali labai skirtis (viena ar dviem sekundėmis) nuo vaizdo takelio ilgio. Nesvarbu, ar visas vaizdo įrašas susideda iš vieno kadro, tačiau klijuojant tokį vaizdo įrašą su pertraukimais prie sienos, atsiranda itin nemalonūs mikčiojimo efektai.

Kitas būdas nustatyti mp3 failo trukmę yra naudoti mp3 informacija. Ji taip pat daro klaidų, o kartais ffmpeg duoda daugiau nei mp3 informacija, kartais būna atvirkščiai, kartais abu meluoja – nepastebėjau jokio modelio. Ir čia soxi veikia teisingai.

Norėdami įdiegti šią naudingą programą, atlikite šiuos veiksmus:

sudo apt-get install sox libsox-fmt-mp3

Perėjimų tarp skaidrių atlikimas

Perėjimas yra trumpas vaizdo įrašas, kuriame viena skaidrė virsta kita. Norėdami sukurti tokius vaizdo įrašus, skaidres imame poromis ir naudodami ImageMagic paversti vieną į kitą:

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

Kažkodėl norėjau, kad skaidrė būtų išbarstyta taškais, o tada iš taškų būtų surinkta kita skaidrė ir tam parašiau scenarijų pavadinimu išnyks.pl Turėdamas ImageMagic, tikras „Linux“ vartotojas sukurs bet kokį specialų efektą, bet jei kam patinka mano idėja su sklaida, štai toks scenarijus:

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

Mes montuojame gatavą vaizdo įrašą

Dabar turime visus fragmentus. Eikite į katalogą klipai ir surinkite gatavą plėvelę naudodami dvi komandas:

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

Mėgaukitės žiūrėdami į savo dėkingus mokinius!

Šaltinis: www.habr.com

Добавить комментарий