Conférences vidéo: Unix Way


La quarantaine est un moment merveilleux pour apprendre quelque chose. Cependant, comme vous le savez, pour que quelqu'un apprenne quelque chose, quelqu'un doit enseigner. Si vous avez une présentation avec laquelle vous souhaitez parler à un millionième public, gagner une renommée mondiale, alors cet article est pour vous. Vous trouverez ici des instructions étape par étape sur la façon de créer une vidéo à partir de la présentation.

Nous marquons la manière d'enregistrer des «commentaires sonores» dans PowerPoint et d'exporter la présentation en vidéo comme triviale et de ne pas donner un dixième des possibilités nécessaires pour une vidéo vraiment cool.

Pour commencer, nous déciderons des cadres dont nous avons besoin:

  1. Glisse en fait avec une voix off
  2. Changement de diapositive
  3. Interrompre les citations de films populaires
  4. Quelques images avec la physionomie du conférencier et du chat préféré (facultatif)


Créer une structure de répertoires


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

Affectation des catalogues dans l'ordre de référencement: films dont nous tirerons des citations (clipart), fragments de notre future vidéo (clips), vidéos de la caméra (rec), diapositives d'image (diapositive), son (son).

Faire une présentation en images


Pour un vrai Linuxoid aux yeux rouges, faire une présentation sous forme d'images ne pose aucun problème. Permettez-moi de vous rappeler qu'un document pdf peut être analysé en images par

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

S'il n'y a pas une telle commande, installez le paquet poppler-utils (instructions pour Ubuntu; si vous avez Arch, alors vous savez déjà quoi faire sans moi).

Ci-après, je pense que la vidéo est en cours de préparation au format HD Ready, soit 1280 × 720. Une présentation d'une taille horizontale de 10 pouces donne exactement cette taille lors du déchargement (voir l'option -r 128).

Nous préparons le texte


Si vous voulez faire du matériel vraiment cool, alors votre discours doit d'abord être écrit. J'ai aussi pensé pouvoir dire le texte sans préparation, d'autant plus que j'ai une bonne expérience de cours. Mais c'est une chose de jouer en direct et une autre d'enregistrer des vidéos. Ne soyez pas paresseux - le temps passé à taper sera payant plus d'une fois.



Voici mon format d'enregistrement. Le nombre dans l'en-tête est égal au numéro de la diapositive, les interruptions sont surlignées en rouge. Tout éditeur convient à la préparation, mais il est préférable de prendre un traitement de texte à part entière - par exemple, OnlyOffice .

Diapositives sonores


Que puis-je dire - allumez le microphone et écrivez :) L'

expérience montre que la qualité d'enregistrement, même à partir du microphone externe le moins cher, est incomparablement meilleure qu'avec le microphone intégré de l'ordinateur portable. Si vous voulez un équipement de haute qualité, je recommande cet article .

Pour l'enregistrement, j'ai utilisé un enregistreur audio - une application d'enregistrement très simple. Vous pouvez le prendre, par exemple, ici:

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

L'essentiel de cette étape est la dénomination correcte des fichiers. Le nom doit être composé d'un numéro de diapositive et d'un numéro de fragment. Les fragments sont numérotés avec des nombres impairs - 1, 3, 5, etc. Ainsi, pour une diapositive dont le texte est montré dans l'image, deux fichiers seront créés: 002-1.mp3 et 002-3.mp3 .

Si vous avez enregistré toutes les vidéos à la fois dans une pièce calme, rien ne peut être fait avec. Si vous avez enregistré en plusieurs étapes, il est préférable d'égaliser le niveau de volume:

mp3gain -r *.mp3

Pour une raison quelconque, les utilitaires mp3gain ne sont pas dans les référentiels standard, mais vous pouvez les obtenir ici:

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

Après tout cela, vous devez écrire un autre fichier avec silence. Il est nécessaire d'ajouter une bande son aux clips muets: s'il y a une bande son dans un clip et pas dans l'autre, il est difficile de coller ces clips. Le silence peut être enregistré à partir du microphone, mais il est préférable de créer un fichier dans l'éditeur Audacity . Le fichier doit durer au moins une seconde (plus long) et silence.mp3 doit être appelé

Rouleaux de dépannage de cuisson


Tout ici n'est limité que par votre imagination. Vous pouvez utiliser l'éditeur Avidemux pour éditer la vidéo . Une fois qu'il était dans des référentiels standard, mais pour une raison quelconque, il a été scié. Cela ne nous arrêtera pas:

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

Instructions pour travailler avec cet éditeur sur la mer, oui, en principe, tout y est intuitif. Il est important de respecter plusieurs conditions.

Tout d'abord, la résolution du film doit correspondre à la résolution cible du film. Pour ce faire, dans la «vidéo de sortie», vous devez utiliser deux filtres: swsResize pour changer la résolution et «ajouter des champs» pour faire du film soviétique de «format étroit» un format large. Tous les autres filtres sont facultatifs. Par exemple, si quelqu'un ne comprend pas la déclaration de M. Sharikov dans le fragment en cours de discussion, en utilisant le filtre «ajouter un logo», vous pouvez ajouter le logo PostgreSQL au-dessus de «Dog’s Heart».

Deuxièmement, tous les fragments doivent utiliser la même fréquence d'images. J'utilise 25 images par seconde, car cela donne tellement mon appareil photo et les vieux films soviétiques. Si le film à partir duquel vous coupez l'image est tourné à une vitesse différente, utilisez le filtre «Rééchantillonner la vidéo».

Troisièmement, tous les fragments doivent être compressés avec le même codec et emballés dans les mêmes conteneurs. Par conséquent, dans Avidemux pour le format, sélectionnez la vidéo - " Mpeg4 AVC (x264) ", l'audio - " AAC (Faac) ", le format de sortie - " MP4 Muxer ".

Quatrièmement, il est important de nommer correctement les clips coupés. Le nom du fichier doit être composé d'un numéro de diapositive et d'un numéro de fragment. Les fragments sont numérotés avec des nombres pairs, en commençant par 2. Ainsi, pour l'image en discussion, le clip avec le hachage doit être appelé 002-2.mp4 Une

fois les clips prêts, vous devez les transférer dans le répertoire contenant les fragments. Les paramètres d' avidemux diffèrent des paramètres par défaut de ffmpeg par les mystérieux paramètres tbr, tbn, tbc. Ils n'affectent pas la reproduction, mais ils ne permettent pas de coller les rouleaux. Par conséquent, nous recodons:

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

Nous supprimons les économiseurs d'écran


Tout ici est aussi simple: filmer en arrière-plan une sorte de schéma intelligent, placer les vidéos reçues dans le répertoire rec , puis les transférer dans le répertoire avec des fragments. Les règles de dénomination sont les mêmes que pour les ruptures de devis, la commande de recodage est la suivante:

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 vous prévoyez de démarrer la vidéo avec votre discours, nommez ce fragment 000-1.mp4

Nous fabriquons des cadres à partir d'images statiques


Il est temps de monter des clips à partir d'images et de sons statiques. Cela se fait avec ce 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

Veuillez noter que la durée du fichier son est d'abord déterminée par l'utilitaire soxi , puis la vidéo de la longueur souhaitée est montée. Toutes les recommandations que j'ai trouvées sont plus simples: au lieu de l' indicateur -t $ {duration} , l'indicateur -shortest est utilisé . En fait, ffmpeg détermine très approximativement la longueur du mp3 et lors de l'installation, la longueur de la piste audio peut être très (une à deux secondes) différente de la longueur de la piste vidéo. Peu importe si la vidéo entière se compose d'une seule image, mais lors du collage d'un tel film avec une rupture à la frontière, des effets extrêmement désagréables avec le bégaiement se produisent.

Une autre façon de déterminer la durée d'un fichier mp3 est d'utiliser mp3info . Elle se trompe aussi, et parfoisffmpeg donne plus que mp3info , parfois vice versa, parfois ils mentent tous les deux - je n'ai remarqué aucun motif. Mais soxi fonctionne correctement.

Pour installer cet utilitaire utile, procédez comme suit:

sudo apt-get install sox libsox-fmt-mp3

Faire des transitions entre les diapositives


Transition - une courte vidéo dans laquelle une diapositive se transforme en une autre. Pour réaliser de telles vidéos, prenez des diapositives par paires et utilisez imagemagick pour transformer l'une en l'autre:

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

Pour une raison quelconque, je voulais que la diapositive se disperse en points, puis la diapositive suivante a été assemblée à partir des points, et pour cela j'ai écrit un script appelé fade.pl Ayant imagemagick , un vrai Linuxoid créera un effet spécial, mais si quelqu'un aime mon idée de dispersion, voici le 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 ("P3\n%d %d\n255\n",$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 0\n" : "255 255 255\n" for (1..$pixsize);
        }
      }
      print PICTURE ($l) for (1..$pixsize);
    }
  }
  close(PICTURE);
}

Montez le rouleau fini


Maintenant, nous avons tous les fragments. Nous allons dans le répertoire des clips et collectons le film fini avec deux commandes:

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

Profitez de votre visionnement à vos étudiants reconnaissants!

All Articles