Videolekcijas: unix veids

Videolekcijas: unix veids
KarantÄ«na ir brÄ«niŔķīgs laiks, lai kaut ko iemācÄ«tos. Tomēr, kā jÅ«s saprotat, lai kāds kaut ko iemācÄ«tos, kādam ir jāmāca. Ja jums ir prezentācija, kuru vēlaties pasniegt miljoniem lielu auditoriju un iegÅ«t pasaules slavu, tad Å”is raksts ir domāts jums. Å eit jÅ«s atradÄ«siet detalizētus norādÄ«jumus par to, kā no prezentācijas izveidot video.

Mēs noraidām ā€œaudio komentāruā€ ierakstÄ«Å”anu programmā PowerPoint un prezentācijas eksportÄ“Å”anu uz video kā triviālu un nenodroÅ”inām desmito daļu no iespējām, kas nepiecieÅ”amas patiesi forÅ”am videoklipam.

Vispirms izlemsim, kādi rāmji mums ir nepiecieŔami:

  1. Faktiskie slaidi ar balsi
  2. Slaidu maiņa
  3. Citāti no populārām filmām
  4. Vairāki kadri ar pasniedzēja seju un viņa mīļāko kaķi (pēc izvēles)

Direktoriju struktūras izveide

.
ā”œā”€ā”€ clipart
ā”œā”€ā”€ clips
ā”œā”€ā”€ rec
ā”œā”€ā”€ slide
ā””ā”€ā”€ sound

Katalogu mērÄ·is uzskaitÄ«Å”anas secÄ«bā: filmas, no kurām mēs izvilksim citātus (klips), mÅ«su nākotnes video fragmenti (klipi), video no kameras (rec), slaidi attēlu veidā (slaids), skaņa (skaņa).

Prezentācijas veidoÅ”ana attēlos

ÄŖstam Linux lietotājam ar sarkanām acÄ«m prezentācijas veidoÅ”ana attēlu veidā nesagādā nekādas problēmas. AtgādināŔu, ka dokumentu pdf formātā var parsēt attēlos, izmantojot komandu

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

Ja Ŕādas komandas nav, instalējiet pakotni pats poppler-utils (norādÄ«jumi par Ubuntu; ja jums ir Arch, tad jÅ«s lieliski zināt, ko darÄ«t bez manis).

Turpmāk uzskatu, ka video ir sagatavots HD Ready formātā, t.i., 1280x720. Prezentācija ar horizontālo izmēru 10 collas nodroÅ”ina tieÅ”i tādu izmēru, kad tā ir izņemta (skatiet opciju -r 128).

Teksta sagatavoŔana

Ja vēlaties izveidot patieŔām lielisku materiālu, vispirms ir jāuzraksta jÅ«su runa. Es arÄ« domāju, ka varu runāt tekstu bez sagatavoÅ”anās, jo Ä«paÅ”i tāpēc, ka man ir laba pieredze lekcijās. Taču viena lieta ir uzstāties tieÅ”raidē un cita lieta ir ierakstÄ«t video. Neesiet slinks ā€” rakstÄ«Å”anai pavadÄ«tais laiks atmaksāsies daudzkārt.

Videolekcijas: unix veids

Å eit ir mans ieraksta formāts. Cipars virsrakstā ir vienāds ar slaida numuru, pārtraukumi ir iezÄ«mēti sarkanā krāsā. SagatavoÅ”anai ir piemērots jebkurÅ” redaktors, taču labāk ir ņemt pilnvērtÄ«gu tekstapstrādes programmu - piemēram, OnlyOffice.

Balss pār slaidiem

Ko lai saka - ieslēdz mikrofonu un raksti :)

Pieredze rāda, ka ieraksta kvalitāte pat no lētākā ārējā mikrofona ir nesalÄ«dzināmi labāka nekā no portatÄ«vā datora iebÅ«vētā mikrofona. Ja vēlaties kvalitatÄ«vu aprÄ«kojumu, iesaku Å”eit ir Å”is raksts.

IerakstÄ«Å”anai izmantoju audio ierakstÄ«tājs ā€“ ļoti vienkārÅ”a lietojumprogramma skaņas ierakstÄ«Å”anai. JÅ«s varat to ņemt, piemēram, Å”eit:

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

Galvenais Å”ajā solÄ« ir pareizi nosaukt failus. Nosaukumā ir jāsastāv no slaida numura un fragmenta numura. Fragmenti tiek numurēti ar nepāra skaitļiem - 1, 3, 5 utt. Tātad slaidam, kura teksts ir redzams attēlā, tiks izveidoti divi faili: 002-1.mp3 Šø 002-3.mp3.

Ja visus videoklipus ierakstījāt vienlaikus klusā telpā, jums ar tiem nekas nav jādara. Ja ierakstījāt vairākos posmos, labāk ir izlīdzināt skaļuma līmeni:

mp3gain -r *.mp3

Komunālie pakalpojumi mp3gain Kādu iemeslu dēļ tas nav standarta krātuvēs, taču varat to iegÅ«t Å”eit:

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

Pēc visa Ŕī jums ir jāieraksta vēl viens fails ar klusumu. Klusajiem video ir jāpievieno skaņas celiņŔ: ja vienam video ir skaņas celiņŔ, bet otram nav, tad Å”os video ir grÅ«ti salÄ«mēt kopā. Klusumu var ierakstÄ«t no mikrofona, bet labāk ir izveidot failu redaktorā PārdroŔība. Faila garumam jābÅ«t vismaz sekundei (iespējams vairāk), un tam jābÅ«t nosauktam klusums.mp3

Notiek pārtraukumu video sagatavoŔana

Å eit visu ierobežo tikai jÅ«su iztēle. Videoklipu rediģēŔanai varat izmantot redaktoru Avidemux. Kādreiz tas bija standarta krātuvēs, bet tad nez kāpēc tika izgriezts. Tas mÅ«s neapturēs:

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

Internetā ir daudz instrukciju darbam ar Å”o redaktoru, un principā viss ir intuitÄ«vs. Ir svarÄ«gi ievērot vairākus nosacÄ«jumus.

Pirmkārt, video izŔķirtspējai ir jāatbilst mērÄ·a video izŔķirtspējai. Lai to izdarÄ«tu, ā€œizvades videoā€ ir jāizmanto divi filtri: swsResize, lai mainÄ«tu izŔķirtspēju, un ā€œlauku pievienoÅ”anaā€, lai padomju ā€œÅ”aurā formātaā€ filmu pārvērstu plaŔā formātā. Visi pārējie filtri nav obligāti. Piemēram, ja kāds nesaprot, kāpēc Å arikova kunga izteikums ir apspriežamajā fragmentā, izmantojot filtru ā€œpievienot logotipuā€, varat uzlikt PostgreSQL logotipu virs ā€œSuņa sirdsā€.

Otrkārt, visiem fragmentiem ir jāizmanto vienāds kadru ātrums. Es izmantoju 25 kadrus sekundē, jo mana kamera un vecās padomju filmas man dod tik daudz. Ja filma, no kuras izgriežat, tika uzņemta ar citu ātrumu, izmantojiet filtru Resample Video.

TreÅ”kārt, visi fragmenti ir jāsaspiež ar vienu un to paÅ”u kodeku un jāiepako vienādos konteineros. Tāpēc iekŔā Avidemux formātam atlasiet video - "Mpeg4 AVC (x264)", audio - "AAC (FAAC)", izvades formāts - "MP4 mikseris'.

Ceturtkārt, ir svarīgi pareizi nosaukt izgrieztos videoklipus. Faila nosaukumam jāsastāv no slaida numura un fragmenta numura. Fragmenti tiek numurēti ar pāra skaitļiem, sākot no 2. Tādējādi apspriežamajam kadram video ar pārtraukumu jāsauc 002-2.mp4

Kad videoklipi ir gatavi, tie jāpārnes uz direktoriju ar fragmentiem. IestatÄ«jumi avidemux atŔķiras no iestatÄ«jumiem ffmpeg pēc noklusējuma ar noslēpumainiem parametriem tbr, tbn, tbc. Tie neietekmē atskaņoÅ”anu, bet neļauj video salÄ«mēt kopā. Tātad pārkodēsim:

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

Ekrānsaudzētāju Å”auÅ”ana

ArÄ« Å”eit viss ir vienkārÅ”i: jÅ«s fotografējat uz kādas gudras shēmas fona, ievietojiet iegÅ«tos videoklipus katalogā REC, un no turienes pārsÅ«tiet to uz direktoriju ar fragmentiem. NosaukÅ”anas noteikumi ir tādi paÅ”i kā pārtraukuma pēdiņām, pārkodÄ“Å”anas komanda ir Ŕāda:

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

Ja plānojat sākt video ar savu runu, nosauciet Ŕo fragmentu 000-1.mp4

Rāmju izgatavoÅ”ana no statiskiem attēliem

Ir pienācis laiks rediģēt videoklipus no statiskiem attēliem un skaņas. Tas tiek darÄ«ts ar Ŕādu skriptu:

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

LÅ«dzu, ņemiet vērā, ka audio faila ilgumu vispirms nosaka utilÄ«ta soxi, un pēc tam tiek rediģēts vajadzÄ«gā garuma video. Visi ieteikumi, ko atradu, ir vienkārŔāki: karoga vietā -t ${duration} tiek izmantots karogs - Ä«sākais. PatiesÄ«bā ffmpeg ļoti aptuveni nosaka mp3 garumu, un rediģēŔanas laikā audio celiņa garums var ievērojami atŔķirties (par vienu vai divām sekundēm) no video celiņa garuma. Tam nav nozÄ«mes, ja viss video sastāv no viena kadra, taču, pielÄ«mējot Ŕādu video ar pārtraukumiem pie robežas, rodas ārkārtÄ«gi nepatÄ«kami stostÄ«Å”anās efekti.

Vēl viens veids, kā noteikt mp3 faila ilgumu, ir izmantot mp3 informācija. Viņa arÄ« pieļauj kļūdas, un dažreiz ffmpeg dod vairāk nekā mp3 informācija, dažreiz ir otrādi, dažreiz viņi abi melo - es nepamanÄ«ju nevienu modeli. Un Å”eit soxi darbojas pareizi.

Lai instalētu Å”o noderÄ«go utilÄ«tu, rÄ«kojieties Ŕādi:

sudo apt-get install sox libsox-fmt-mp3

Pāreju veikŔana starp slaidiem

Pāreja ir Ä«ss video, kurā viens slaids pārvērÅ”as citā. Lai izveidotu Ŕādus video, mēs uzņemam slaidus pa pāriem un izmantojot ImageMagick pārveidot vienu par otru:

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

Nez kāpēc man gribējās, lai slaids bÅ«tu izkaisÄ«ts ar punktiem, un tad no punktiem tiktu salikts nākamais slaids, un Å”im es uzrakstÄ«ju skriptu ar nosaukumu izbalināt.pl Ņemot ImageMagick, Ä«sts Linux lietotājs radÄ«s jebkuru specefektu, bet, ja kādam patÄ«k mana ideja ar izkliedÄ“Å”anu, tad lÅ«k skripts:

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

Mēs uzstādām gatavo video

Tagad mums ir visi fragmenti. Dodieties uz katalogu klipi un salieciet gatavo plēvi, izmantojot divas komandas:

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

Patīkamu skatīŔanos saviem pateicīgajiem studentiem!

Avots: www.habr.com

Pievieno komentāru