Video lectures: modu Unix

Video lectures: modu Unix
A quarantena hè un tempu maravigliu per amparà qualcosa. Tuttavia, cum'è avete capitu, per qualcunu per amparà qualcosa, qualchissia deve insignà. Sè vo avete una presentazione chì vulete dà à un publicu di milioni è guadagnà fama in u mondu sanu, allora stu articulu hè per voi. Quì truverete struzzioni passu per passu nantu à cumu fà un video da a vostra presentazione.

Licemu a strada di registrà "cumenti audio" in PowerPoint è esportendu a presentazione à u video cum'è triviale è ùn furnisce micca un decimu di e capacità necessarie per un video veramente cool.

Prima, decidemu chì frames avemu bisognu:

  1. I slides attuali cù voce off
  2. Cambia diapositive
  3. Citazioni da i filmi populari
  4. Diversi frames cù a faccia di u prufessore è u so gattu preferitu (opcional)

Crià una struttura di cartulare

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

U scopu di i cartulari in l'ordine di a lista: i filmi da quali tiremu citazioni (clipart), frammenti di u nostru futuru video (clips), video da a camera (rec), slides in forma di stampi (slide), sonu. (sonu).

Fà una presentazione in imagine

Per un veru utilizatore di Linux cù l'occhi rossi, fà una presentazione in forma di ritratti ùn presenta micca prublemi. Lasciami ricurdà solu chì un documentu in formatu pdf pò esse analizatu in l'imaghjini cù u cumandimu

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

Se ùn ci hè micca un tali cumandamentu, installate u pacchettu sè stessu poppler-utils (istruzzioni per Ubuntu; se avete Arch, allora sapete perfettamente ciò chì fate senza mè).

Quì è più, crede chì u video hè preparatu in formatu HD Ready, vale à dì 1280x720. Una presentazione cù una dimensione horizontale di 10 inch dà esattamente questa dimensione quandu scaricata (vede u paràmetru -r 128).

Preparazione di u testu

Se vulete fà un materiale veramente grande, u vostru discorsu deve esse scrittu prima. Pensu ancu chì puderia parlà u testu senza preparazione, soprattuttu chì aghju una bona sperienza in lezioni. Ma hè una cosa di fà in diretta, è un'altra cosa di registrà un video. Ùn siate pigri - u tempu passatu à scrivere pagherà parechje volte.

Video lectures: modu Unix

Eccu u mo furmatu di registrazione. U numeru in u titulu hè uguali à u numeru di slide, l'interruzioni sò evidenziate in rossu. Qualchese editore hè adattatu per a preparazione, ma hè megliu piglià un processatore di testu cumpletu - per esempiu, SoloOffice.

Voce sopra i slides

Chì possu dì - accende u microfonu è scrive :)

L'esperienza mostra chì a qualità di registrazione ancu da u microfonu esternu più prezzu hè incomparabilmente megliu cà da u microfonu integratu di un laptop. Sè vo vulete un equipamentu di qualità, vi cunsigliu stu articulu.

Per a registrazione aghju utilizatu audio-registratore - una applicazione assai simplice per a registrazione di u sonu. Pudete piglià, per esempiu, quì:

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

A cosa principal in questu passu hè di nome i schedari currettamente. U nome deve esse cumpostu da u numeru di diapositiva è u numeru di frammentu. I frammenti sò numerati cù numeri impari - 1, 3, 5, etc. Allora, per a slide, u testu di quale hè mostratu in a stampa, seranu creati dui schedari: 002-1.mp3 и 002-3.mp3.

Se avete arregistratu tutti i video à una volta in una stanza tranquilla, ùn avete micca da fà nunda più cun elli. Sè vo avete arregistratu in parechji passi, hè megliu à equalizà u livellu di volume:

mp3gain -r *.mp3

Utilitati mp3 torna Per una certa ragione ùn hè micca in i repositori standard, ma pudete ottene quì:

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

Dopu tuttu questu, avete bisognu di arregistrà un altru schedariu cù u silenziu. Hè necessariu aghjunghje una pista di sonu à i video silenziu: se un video hà una pista di sonu è l'altru ùn hà micca, allora hè difficiule di cola sti video. U silenziu pò esse arregistratu da un microfonu, ma hè megliu creà un schedariu in l'editore Audacity. A durata di u schedariu deve esse almenu un secondu (più hè pussibule), è deve esse chjamatu silenziu.mp3

Preparazione di video di interruzzione

Quì tuttu hè limitatu solu da a vostra imaginazione. Pudete aduprà un editore per edità video Avidemux. Una volta era in i repositori standard, ma per una certa ragione hè statu tagliatu. Questu ùn ci impedisce micca:

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

Ci hè parechje struzzioni per travaglià cù questu editore in Internet, è in principiu, tuttu hè intuitivu. Hè impurtante di scuntrà parechje cundizioni.

Prima, a risoluzione video deve currisponde à a risoluzione video di destinazione. Per fà questu, avete bisognu di utilizà dui filtri in u "video di output": swsResize per cambià a risuluzione è "aghjunghje campi" per trasfurmà un film sovieticu "formatu strettu" in un furmatu largu. Tutti l'altri filtri sò opzionali. Per esempiu, se qualchissia ùn capisce micca perchè a dichjarazione di u sgiò Sharikov hè in u frammentu in discussione, utilizendu u filtru "aghjunghje logu", pudete overlay u logu PostgreSQL nantu à a cima di "Dog Heart".

Siconda, tutti i frammenti anu da utilizà a stessa freccia di quadru. Aghju utilizatu 25 frames per seconda perchè a mo camera è i vechji filmi sovietici mi dannu tantu. Se u filmu chì vo tagliate hè statu sparatu à una velocità diversa, utilizate u filtru Resample Video.

In terzu, tutti i frammenti devenu esse cumpressi cù u listessu codec è imballati in i stessi cuntenituri. Dunque in Avidemux per u furmatu, selezziunate u video - "MPEG4 AVC (x264)", audio - "AAC (FAAC)", furmatu di output - "Muxer MP4».

In quartu, hè impurtante per nome u video cut currettamente. U nome di u schedariu deve esse cumpostu da u numeru di diapositiva è u numeru di fragmentu. I frammenti sò numerati cù numeri pari, partendu da 2. Cusì, per u quadru in discussione, u video cù l'interruzzione deve esse chjamatu. 002-2.mp4

Dopu chì i video sò pronti, avete bisognu di trasfiriri à u cartulare cù frammenti. Settings avidemux differisce da i paràmetri ffmpeg per difettu cù parametri misteriosi tbr, tbn, tbc. Ùn affettanu micca a riproduzione, ma ùn permettenu micca chì i video sò incollati. Allora ricudificàmu:

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

Ripresa di screensavers

Quì, ancu, tuttu hè simplice: sparate in u sfondate di qualchì schema intelligente, mette i video resultanti in un catalogu rec, è da quì trasferisce à u cartulare cù frammenti. E regule di nomenclatura sò listessi cum'è per i citazioni d'interruzzione, u cumandamentu di ricudificazione hè a siguenti:

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

Se pensa à inizià u video cù u vostru discorsu, nome stu fragmentu 000-1.mp4

Fà frames da stampe statiche

Hè u tempu di edità video da l'imaghjini statichi è u sonu. Questu hè fattu cù u seguente script:

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

Per piacè nutate chì a durata di u schedariu audio hè prima determinata da l'utilità soxi, è dopu u video di a durata necessaria hè editatu. Tutti i cunsiglii chì aghju trovu sò più simplici: invece di una bandiera -t ${durata} bandiera hè usata - più corta... In fatti ffmpeg determina a durata di l'mp3 assai apprussimatamente, è durante l'editing, a durata di a pista audio pò differisce assai (da unu o duie seconde) da a durata di a pista di video. Ùn importa micca se u video sanu hè custituitu da un unicu quadru, ma quandu incollate un tali video cù interruzioni à u cunfini, si verificanu effetti stuttering estremamente sgradevoli.

Un altru modu per determinà a durata di un schedariu mp3 hè di utilizà mp3info. Ella face ancu sbagli, è qualchì volta ffmpeg dà più cà mp3info, Certe volte hè l'inversu, qualchì volta si mentenu tramindui - ùn aghju micca nutatu nisun mudellu. È quì soxi funziona bè.

Per installà sta utilità utile, fate questu:

sudo apt-get install sox libsox-fmt-mp3

Fà transizioni trà diapositive

Una transizione hè un brevi video in quale una diapositiva si trasforma in una altra. Per fà tali video, pigliamu slides in coppie è usendu imagemagick trasfurmà unu in l'altru:

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

Per una certa ragione, vulia chì a diapositiva sia spargugliata cù punti, è dopu a prossima diapositiva seria assemblata da i punti, è per questu aghju scrittu un script chjamatu. fade.pl Avè imagemagick, un veru utilizatore di Linux creà ogni effettu speciale, ma se qualchissia piace a mo idea cù scattering, quì hè u script:

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

Muntamu u video finitu

Avà avemu tutti i frammenti. Andà à u catalogu Video è assemble u film finitu cù dui cumandamenti:

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

Prufittate di guardà i vostri studenti grati!

Source: www.habr.com

Add a comment