Videoconferències: manera unix

Videoconferències: manera unix
La quarantena és un moment meravellós per aprendre alguna cosa. Tanmateix, tal com enteneu, perquè algú aprengui alguna cosa, algú ha d'ensenyar. Si teniu una presentació que voleu fer a un públic de milions i guanyar fama mundial, aquest article és per a vosaltres. Aquí trobareu instruccions pas a pas sobre com fer un vídeo a partir de la vostra presentació.

Descartem el camí de gravar "comentaris d'àudio" a PowerPoint i exportar la presentació a vídeo com a trivial i no proporcionar una desena part de les capacitats necessàries per a un vídeo realment genial.

Primer, decidim quins marcs necessitem:

  1. Les diapositives reals amb veu en off
  2. Canvi de diapositives
  3. Cites de pel·lícules populars
  4. Diversos quadres amb la cara del professor i el seu gat preferit (opcional)

Creació d'una estructura de directoris

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

El propòsit dels directoris per ordre de llista: pel·lícules de les quals traurem cites (clipart), fragments del nostre futur vídeo (clips), vídeos de la càmera (rec), diapositives en forma d'imatges (diapositiva), so (so).

Realització d'una presentació en imatges

Per a un veritable usuari de Linux d'ulls vermells, fer una presentació en forma d'imatges no presenta cap problema. Només us recordo que un document en format pdf es pot analitzar en imatges mitjançant l'ordre

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

Si no hi ha aquesta comanda, instal·leu el paquet vosaltres mateixos Poppler-utils (instruccions per a Ubuntu; si tens Arch, saps perfectament què fer sense mi).

Aquí i més enllà, crec que el vídeo està preparat en format HD Ready, és a dir, 1280x720. Una presentació amb una mida horitzontal de 10 polzades dóna exactament aquesta mida quan es descarrega (vegeu l'opció -r 128).

Preparació del text

Si voleu fer un material realment fantàstic, primer s'ha d'escriure el vostre discurs. També vaig pensar que podia parlar el text sense preparació, sobretot perquè tinc una bona experiència en la docència. Però una cosa és actuar en directe i una altra cosa és gravar un vídeo. No siguis mandrós: el temps que dediques a escriure tindrà molts beneficis.

Videoconferències: manera unix

Aquí teniu el meu format de gravació. El número del títol és igual al número de la diapositiva, les interrupcions es destaquen en vermell. Qualsevol editor és adequat per a la preparació, però és millor prendre un processador de textos complet, per exemple, OnlyOffice.

Veu sobre les diapositives

Què puc dir - encendre el micròfon i escriure :)

L'experiència demostra que la qualitat d'enregistrament fins i tot des del micròfon extern més barat és incomparablement millor que la del micròfon integrat d'un ordinador portàtil. Si voleu un equip de qualitat, us el recomano aquí teniu aquest article.

Per gravar vaig utilitzar àudio-recorder – una aplicació molt senzilla per a la gravació de so. Podeu prendre-ho, per exemple, aquí:

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

El més important en aquest pas és anomenar correctament els fitxers. El nom ha de consistir en el número de la diapositiva i el número del fragment. Els fragments estan numerats amb nombres senars: 1, 3, 5, etc. Per tant, per a la diapositiva, el text de la qual es mostra a la imatge, es crearan dos fitxers: 002-1.mp3 и 002-3.mp3.

Si heu gravat tots els vídeos alhora en una habitació tranquil·la, no haureu de fer res més amb ells. Si heu gravat en diversos passos, és millor igualar el nivell de volum:

mp3gain -r *.mp3

Utilitats mp3gain Per algun motiu no es troba als repositoris estàndard, però el podeu obtenir aquí:

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

Després de tot això, cal gravar un altre fitxer amb silenci. Cal afegir una banda sonora als vídeos silenciosos: si un vídeo té una banda sonora i l'altre no, és difícil enganxar aquests vídeos. El silenci es pot gravar des d'un micròfon, però és millor crear un fitxer a l'editor Audàcia. La durada del fitxer ha de ser com a mínim d'un segon (és possible més) i s'ha de posar un nom silenci.mp3

Preparant vídeos d'interrupció

Aquí tot està limitat només per la teva imaginació. Podeu utilitzar un editor per editar vídeos Avidemux. Hi havia una vegada que estava als repositoris estàndard, però després per algun motiu es va tallar. Això no ens aturarà:

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

Hi ha moltes instruccions per treballar amb aquest editor a Internet i, en principi, tot és intuïtiu. És important complir diverses condicions.

En primer lloc, la resolució de vídeo ha de coincidir amb la resolució de vídeo objectiu. Per fer-ho, heu d'utilitzar dos filtres al "vídeo de sortida": swsResize per canviar la resolució i "afegir camps" per convertir una pel·lícula de "format estret" soviètic en un format ampli. Tots els altres filtres són opcionals. Per exemple, si algú no entén per què la declaració del Sr. Sharikov es troba al fragment en discussió, utilitzant el filtre "afegeix logotip", podeu superposar el logotip de PostgreSQL a la part superior del "Cor del gos".

En segon lloc, tots els fragments han d'utilitzar la mateixa velocitat de fotogrames. Utilitzo 25 fotogrames per segon perquè la meva càmera i les antigues pel·lícules soviètiques em donen molt. Si la pel·lícula de la qual esteu tallant s'ha rodat a una velocitat diferent, utilitzeu el filtre Re-sample Video.

En tercer lloc, tots els fragments s'han de comprimir amb el mateix còdec i empaquetats en els mateixos contenidors. Per tant en Avidemux per al format, seleccioneu el vídeo - "MPEG4 AVC (x264)", àudio - "AAC (FAAC)", format de sortida - "MP4 muxer».

En quart lloc, és important anomenar correctament els vídeos retallats. El nom del fitxer ha de consistir en el número de la diapositiva i el número del fragment. Els fragments es numeran amb nombres parells, començant per 2. Així, per al fotograma en discussió, s'hauria d'anomenar el vídeo amb la interrupció. 002-2.mp4

Quan els vídeos estiguin preparats, cal transferir-los al directori amb fragments. Configuració avidemux difereixen de la configuració ffmpeg per defecte amb paràmetres misteriosos tbr, tbn, tbc. No afecten la reproducció, però no permeten enganxar els vídeos. Així que recodifiquem:

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

Disparant salvapantalles

Aquí, també, tot és senzill: feu fotos amb el teló de fons d'un esquema intel·ligent, poseu els vídeos resultants en un catàleg rec, i des d'aquí transferir-lo al directori amb fragments. Les regles de denominació són les mateixes que per a les cometes d'interrupció, l'ordre de recodificació és la següent:

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

Si teniu previst començar el vídeo amb el vostre discurs, poseu un nom a aquest fragment 000-1.mp4

Creació de marcs a partir d'imatges estàtiques

És hora d'editar vídeos a partir d'imatges estàtiques i de so. Això es fa amb el següent 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

Tingueu en compte que la durada del fitxer d'àudio la determina primer la utilitat soxi, i després s'edita el vídeo de la durada requerida. Totes les recomanacions que he trobat són més senzilles: en comptes d'una bandera -t ${durada} s'utilitza la bandera -el més curt. De fet ffmpeg determina la durada de l'mp3 molt aproximadament, i durant l'edició, la durada de la pista d'àudio pot diferir molt (en un o dos segons) de la durada de la pista de vídeo. Això no importa si tot el vídeo consta d'un únic fotograma, però quan enganxeu un vídeo d'aquest tipus amb interrupcions a la vora, es produeixen efectes de tartamudeig extremadament desagradables.

Una altra manera de determinar la durada d'un fitxer mp3 és utilitzar informació mp3. Ella també s'equivoca, i de vegades ffmpeg dóna més que informació mp3, de vegades és al revés, de vegades tots dos menteixen: no vaig notar cap patró. I aquí soxi funciona correctament.

Per instal·lar aquesta utilitat útil, feu el següent:

sudo apt-get install sox libsox-fmt-mp3

Fer transicions entre diapositives

Una transició és un vídeo breu en què una diapositiva es converteix en una altra. Per fer aquests vídeos, fem diapositives per parelles i utilitzant màgia de la imatge transformar un en l'altre:

#!/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 alguna raó volia que la diapositiva estigués escampada amb punts, i després la següent diapositiva s'assemblaria a partir dels punts, i per això vaig escriure un guió anomenat esvair.pl Tenir màgia de la imatge, un usuari de Linux real crearà qualsevol efecte especial, però si a algú li agrada la meva idea amb la dispersió, aquí teniu l'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);
}

Muntem el vídeo acabat

Ara tenim tots els fragments. Aneu al catàleg clips i munta la pel·lícula acabada mitjançant dues ordres:

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

Gaudeix mirant els teus alumnes agraïts!

Font: www.habr.com

Afegeix comentari