Videó előadások: unix way

Videó előadások: unix way
A karantén nagyszerű alkalom arra, hogy tanuljunk valamit. Azonban, mint érted, ahhoz, hogy valaki megtanuljon valamit, valakinek tanítania kell. Ha van egy prezentációja, amelyet milliós közönségnek szeretne tartani, és ezzel világszerte hírnevet szeretne szerezni, akkor ez a cikk neked szól. Itt lépésről lépésre találja meg, hogyan készíthet videót a prezentációjából.

Elvetjük az „audio megjegyzések” PowerPointban történő rögzítésének és a prezentáció videóba való exportálásának útját, mint triviálist, és nem biztosítjuk az igazán menő videóhoz szükséges képességek tizedét sem.

Először is döntsük el, milyen keretekre van szükségünk:

  1. A tényleges diák hangjelzéssel
  2. diaváltás
  3. Idézetek népszerű filmekből
  4. Több képkocka az előadó arcával és kedvenc macskájával (opcionális)

Könyvtárstruktúra létrehozása

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

A könyvtárak célja a felsorolás sorrendjében: filmek, amelyekből idézeteket húzunk (clipart), leendő videónk töredékei (klipek), videók a kamerából (felvétel), diák kép formájában (dia), hang (hang).

Prezentáció készítése képekben

Egy igazi vörös szemű Linux-felhasználó számára nem okoz gondot a képek formájában bemutató prezentáció elkészítése. Hadd emlékeztesselek arra, hogy egy pdf formátumú dokumentum a paranccsal képekké elemezhető

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

Ha nincs ilyen parancs, telepítse saját maga a csomagot poppler-utils (Útmutató az Ubuntuhoz; ha van Arch, akkor tökéletesen tudja, mit kell tenni nélkülem).

Itt és a továbbiakban úgy gondolom, hogy a videó HD Ready formátumban, azaz 1280x720-ban készült. Egy 10 hüvelykes vízszintes méretű bemutató pontosan ezt a méretet adja ki kirakott állapotban (lásd az -r 128 opciót).

A szöveg előkészítése

Ha igazán nagyszerű anyagot akarsz készíteni, először a beszédet kell megírnod. Arra is gondoltam, hogy felkészülés nélkül is meg tudom mondani a szöveget, főleg, hogy jó tapasztalataim vannak az előadásban. De egy dolog élőben fellépni, és egy másik dolog videót rögzíteni. Ne légy lusta – a gépeléssel töltött idő sokszorosan megtérül.

Videó előadások: unix way

Itt van a felvételi formátumom. A címben szereplő szám megegyezik a dia számával, a megszakítások pirossal vannak kiemelve. Bármely szerkesztő alkalmas az előkészítésre, de jobb egy teljes értékű szövegszerkesztőt venni - például OnlyOffice.

Hang a diák felett

Mit mondjak - kapcsold be a mikrofont és írj :)

A tapasztalatok azt mutatják, hogy a legolcsóbb külső mikrofonról is összehasonlíthatatlanul jobb a felvételi minőség, mint egy laptop beépített mikrofonjából. Ha minőségi felszerelést szeretne, akkor ajánlom itt van ez a cikk.

Felvételhez használtam audio-felvevő – egy nagyon egyszerű alkalmazás hangrögzítéshez. Itt veheted át például:

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

Ebben a lépésben a legfontosabb a fájlok helyes elnevezése. A névnek a dia számából és a töredék számából kell állnia. A töredékek páratlan számokkal vannak számozva - 1, 3, 5 stb. Tehát a diához, amelynek szövege a képen látható, két fájl jön létre: 002-1.mp3 и 002-3.mp3.

Ha az összes videót egyszerre rögzítette egy csendes szobában, akkor nem kell többet tennie velük. Ha több lépésben rögzítette, jobb, ha kiegyenlíti a hangerőt:

mp3gain -r *.mp3

Rezsi mp3gain Valamilyen oknál fogva nem található a szabványos tárolókban, de itt letöltheti:

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

Mindezek után egy újabb fájlt kell rögzítenie csendben. A néma videókhoz hangsávot kell hozzáadni: ha az egyik videónak van hangsávja, a másiknak nincs, akkor ezeket a videókat nehéz összeragasztani. A csendet mikrofonról rögzíthetjük, de jobb, ha a szerkesztőben hozunk létre egy fájlt vakmerőség. A fájl hosszának legalább egy másodpercnek kell lennie (több is lehetséges), és el kell nevezni csend.mp3

Megszakítási videók készítése

Itt mindennek csak a képzelet szab határt. A videók szerkesztéséhez használhat szerkesztőt avidemux. Valamikor a szabvány tárolókban volt, de akkor valamiért kivágták. Ez nem állít meg minket:

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

Az interneten sok utasítás található a szerkesztővel való munkához, és elvileg minden intuitív. Fontos több feltétel teljesítése.

Először is, a videó felbontásának meg kell egyeznie a cél videó felbontással. Ehhez két szűrőt kell használnia a „kimeneti videóban”: az swsResize-t a felbontás megváltoztatásához és a „mezők hozzáadása”-t, hogy egy szovjet „keskeny formátumú” filmet széles formátumúvá alakítson. Az összes többi szűrő opcionális. Például, ha valaki nem érti, hogy Sharikov úr kijelentése miért szerepel a tárgyalt töredékben, a „logó hozzáadása” szűrő használatával a PostgreSQL logót a „Kutyaszív” tetejére fedheti.

Másodszor, minden töredéknek ugyanazt a képkockasebességet kell használnia. 25 képkockát használok másodpercenként, mert a fényképezőgépem és a régi szovjet filmek ennyit adnak nekem. Ha a filmet, amelyből kivág, eltérő sebességgel forgatták, használja az Újraminta videó szűrőt.

Harmadszor, minden töredéket ugyanazzal a kodekkel kell tömöríteni, és ugyanabba a tárolóba kell csomagolni. Ezért be avidemux a formátumhoz válassza ki a videót – "MPEG4 AVC (x264)", hang - "AAC (FAAC)", kimeneti formátum - "MP4 keverő".

Negyedszer, fontos, hogy helyesen nevezzük el a kivágott videókat. A fájlnévnek a dia számából és a töredék számából kell állnia. A töredékek számozása páros számokkal történik, 2-től kezdődően. Így a tárgyalt képkockához a megszakítást tartalmazó videót meg kell hívni. 002-2.mp4

Miután a videók elkészültek, át kell helyezni őket a töredékekkel ellátott könyvtárba. Beállítások avidemux eltérnek a beállításoktól ffmpeg alapértelmezés szerint titokzatos paraméterekkel tbr, tbn, tbc. Nem befolyásolják a lejátszást, de nem teszik lehetővé a videók összeragasztását. Tehát kódoljuk újra:

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

Képernyővédők felvétele

Itt is minden egyszerű: valami okos terv hátterében forgatsz, a kapott videókat katalógusba helyezed. rec, és onnan töredékekkel vigye át a könyvtárba. Az elnevezési szabályok ugyanazok, mint a megszakítási idézőjeleknél, az újrakódolási parancs a következő:

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

Ha azt tervezi, hogy a videót a beszédével kezdi, nevezze el ezt a részletet 000-1.mp4

Keretek készítése statikus képekből

Itt az ideje, hogy statikus képekből és hangokból szerkesztsd a videókat. Ez a következő szkripttel történik:

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

Kérjük, vegye figyelembe, hogy az audiofájl időtartamát először a segédprogram határozza meg soxi, majd megtörténik a kívánt hosszúságú videó szerkesztése. Minden ajánlás, amit találtam, egyszerűbb: zászló helyett -t ${duration} zászlót használják - legrövidebb... Tulajdonképpen ffmpeg nagyon hozzávetőlegesen határozza meg az mp3 hosszát, és szerkesztés közben a hangsáv hossza erősen (egy-két másodperccel) eltérhet a videósáv hosszától. Ez nem számít, ha a teljes videó egyetlen képkockából áll, de ha egy ilyen videót megszakításokkal ragasztunk a határon, rendkívül kellemetlen akadozó hatások lépnek fel.

Az mp3 fájl időtartamának meghatározásának másik módja a használata mp3 info. Ő is hibázik, és néha ffmpeg többet ad, mint mp3 info, néha fordítva van, néha mindketten hazudnak – nem vettem észre semmilyen mintát. És itt soxi megfelelően működik.

A hasznos segédprogram telepítéséhez tegye a következőket:

sudo apt-get install sox libsox-fmt-mp3

Átmenetek készítése a diák között

Az átmenet egy rövid videó, amelyben az egyik dia a másikba változik. Az ilyen videók elkészítéséhez párban készítünk diákat és használunk imagemagick átalakítani egyiket a másikba:

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

Valamiért azt akartam, hogy a dia pontokkal legyen szétszórva, majd a pontokból álljon össze a következő dia, és ehhez írtam egy forgatókönyvet, ún. fade.pl Miután imagemagick, egy igazi Linux-felhasználó bármilyen speciális effektust létrehoz, de ha valakinek tetszik az ötletem a szórással, akkor itt a szkript:

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

Felszereljük a kész videót

Most megvan az összes töredék. Menjen a katalógusba klipek és állítsa össze a kész filmet két paranccsal:

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

Kellemes nézelődést hálás tanítványaidnak!

Forrás: will.com

Hozzászólás