Conférences vidéo : méthode Unix

Conférences vidéo : méthode Unix
La quarantaine est un moment merveilleux pour apprendre quelque chose. Cependant, comme vous le comprenez, pour que quelqu'un apprenne quelque chose, quelqu'un doit enseigner. Si vous souhaitez faire une présentation à un public de plusieurs millions de personnes et acquérir une renommée mondiale, alors cet article est fait pour vous. Vous trouverez ici des instructions étape par étape sur la façon de créer une vidéo à partir de votre présentation.

Nous rejetons la méthode consistant à enregistrer des « commentaires audio » dans PowerPoint et à exporter la présentation vers une vidéo, la considérant comme triviale et ne fournissant pas un dixième des capacités nécessaires pour une vidéo vraiment cool.

Tout d'abord, décidons de quels cadres nous avons besoin :

  1. Les diapositives réelles avec voix off
  2. changement de diapositive
  3. Citations de films populaires
  4. Plusieurs cadres avec le visage du conférencier et son chat préféré (facultatif)

Création d'une structure de répertoires

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

Objectif des répertoires dans l'ordre de listage : films dont nous tirerons des citations (clipart), fragments de nos futures vidéos (clips), vidéos de la caméra (rec), slides sous forme d'images (slide), son (son).

Faire une présentation en images

Pour un véritable utilisateur Linux aux yeux rouges, faire une présentation sous forme d'images ne présente aucun problème. Permettez-moi juste de vous rappeler qu'un document au format pdf peut être analysé en images à l'aide de la commande

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

S'il n'existe pas de commande de ce type, installez le package vous-même poppler-utils (instructions pour Ubuntu ; si vous avez Arch, alors vous savez parfaitement quoi faire sans moi).

Ici et plus loin, je crois que la vidéo est préparée au format HD Ready, soit 1280x720. Une présentation avec une taille horizontale de 10 pouces donne exactement cette taille une fois déchargée (voir le paramètre -r 128).

Préparation du texte

Si vous voulez faire un très bon matériel, votre discours doit d’abord être écrit. Je pensais aussi que je pourrais prononcer le texte sans préparation, d'autant plus que j'ai une bonne expérience en cours magistral. Mais c’est une chose de jouer en live et une autre d’enregistrer une vidéo. Ne soyez pas paresseux – le temps passé à taper sera récompensé plusieurs fois.

Conférences vidéo : méthode Unix

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

Voix off sur les slides

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

L'expérience montre que la qualité d'enregistrement, même avec le microphone externe le moins cher, est incomparablement meilleure qu'avec le microphone intégré d'un ordinateur portable. Si vous souhaitez du matériel de qualité, je vous le recommande cet article.

Pour l'enregistrement, j'ai utilisé enregistreur audio – une application très simple pour l’enregistrement sonore. 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 à cette étape est de nommer correctement les fichiers. Le nom doit être composé du numéro de la diapositive et du numéro du fragment. Les fragments sont numérotés avec des nombres impairs - 1, 3, 5, etc. Ainsi, pour la diapositive dont le texte est affiché dans l'image, deux fichiers seront créés : 002-1.mp3 и 002-3.mp3.

Si vous avez enregistré toutes les vidéos en même temps dans une pièce calme, vous n’avez rien d’autre à faire avec elles. Si vous avez enregistré en plusieurs étapes, il est préférable d'égaliser le niveau de volume :

mp3gain -r *.mp3

Utilitaires mp3gain Pour une raison quelconque, il ne figure pas dans les référentiels standard, mais vous pouvez l'obtenir ici :

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

Après tout cela, vous devez enregistrer un autre fichier avec silence. Il est nécessaire d'ajouter une bande sonore aux vidéos muettes : si une vidéo a une bande sonore et l'autre pas, alors il est difficile de coller ces vidéos entre elles. Le silence peut être enregistré depuis un microphone, mais il vaut mieux créer un fichier dans l'éditeur Audacity. La longueur du fichier doit être d'au moins une seconde (plus est possible) et il doit être nommé silence.mp3

Préparation des vidéos d'interruption

Ici, tout n'est limité que par votre imagination. Vous pouvez utiliser un éditeur pour éditer des vidéos Avidemux. Il était une fois dans les référentiels standard, mais pour une raison quelconque, il a été supprimé. Cela ne nous arrêtera pas :

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

Il existe de nombreuses instructions pour travailler avec cet éditeur sur Internet et, en principe, tout y est intuitif. Il est important de remplir plusieurs conditions.

Premièrement, la résolution vidéo doit correspondre à la résolution vidéo cible. Pour ce faire, vous devez utiliser deux filtres dans la « vidéo de sortie » : swsResize pour modifier la résolution et « ajouter des champs » pour transformer un film soviétique « format étroit » en format large. Tous les autres filtres sont facultatifs. Par exemple, si quelqu'un ne comprend pas pourquoi la déclaration de M. Sharikov se trouve dans le fragment en discussion, en utilisant le filtre « ajouter un logo », vous pouvez superposer le logo PostgreSQL au-dessus du « cœur de chien ».

Deuxièmement, tous les fragments doivent utiliser la même fréquence d'images. J'utilise 25 images par seconde parce que mon appareil photo et mes vieux films soviétiques m'en donnent autant. Si le film que vous coupez a été 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 conditionnés dans les mêmes conteneurs. Donc dans Avidemux pour le format, sélectionnez vidéo – "MPEG4 AVC (x264)", l'audio - "AAC (FAAC)", format de sortie - "Muxer MP4».

Quatrièmement, il est important de nommer correctement les vidéos coupées. Le nom du fichier doit être composé du numéro de diapositive et du numéro de fragment. Les fragments sont numérotés avec des nombres pairs, à partir de 2. Ainsi, pour l'image en discussion, la vidéo avec l'interruption doit être appelée 002-2.mp4

Une fois les vidéos prêtes, vous devez les transférer dans le répertoire contenant les fragments. Paramètres avidemux diffèrent des paramètres ffmpeg par défaut avec des paramètres mystérieux tbr, tbn, tbc. Ils n’affectent pas la lecture, mais ils ne permettent pas de coller les vidéos entre elles. Alors recodons :

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

Économiseurs d'écran de prise de vue

Ici aussi, tout est simple : vous filmez sur fond de schéma astucieux, mettez les vidéos obtenues dans un catalogue rec, et de là, transférez-le dans le répertoire avec les fragments. Les règles de dénomination sont les mêmes que pour les guillemets d'interruption, 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 envisagez de commencer la vidéo avec votre discours, nommez ce fragment 000-1.mp4

Créer des cadres à partir d'images statiques

Il est temps d'éditer des vidéos à partir d'images et de sons statiques. Cela se fait avec le script suivant :

#!/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 audio est d'abord déterminée par l'utilitaire sexe, puis la vidéo de la longueur requise est éditée. Toutes les recommandations que j'ai trouvées sont plus simples : au lieu d'un drapeau -t ${durée} le drapeau est utilisé -le plus court. En réalité ffmpeg détermine la durée du mp3 de manière très approximative, et lors du montage, la durée de la piste audio peut différer considérablement (d'une ou deux secondes) de la longueur de la piste vidéo. Cela n'a pas d'importance si la vidéo entière consiste en une seule image, mais lorsque vous collez une telle vidéo avec des interruptions au bord, des effets de bégaiement extrêmement désagréables se produisent.

Une autre façon de déterminer la durée d'un fichier mp3 consiste à utiliser infos mp3. Elle fait aussi des erreurs, et parfois ffmpeg donne plus que infos mp3, parfois c’est l’inverse, parfois ils mentent tous les deux – je n’ai remarqué aucune tendance. Et ici sexe 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

Une transition est une courte vidéo dans laquelle une diapositive se transforme en une autre. Pour réaliser de telles vidéos, nous prenons des diapositives par paires et utilisons imagemagick transformer l'un 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 soit parsemée de points, puis la diapositive suivante serait assemblée à partir des points, et pour cela j'ai écrit un script appelé fondu.pl Ayant imagemagick, un vrai utilisateur de Linux créera n'importe quel effet spécial, mais si quelqu'un aime mon idée avec la diffusion, 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 ("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);
}

Nous montons la vidéo terminée

Nous avons maintenant tous les fragments. Aller au catalogue clips et assemblez le film fini à l'aide de 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

Bon visionnage à vos étudiants reconnaissants !

Source: habr.com

Ajouter un commentaire