Διαλέξεις βίντεο: unix way

Διαλέξεις βίντεο: unix way
Η καραντίνα είναι μια υπέροχη στιγμή για να μάθετε κάτι. Ωστόσο, όπως καταλαβαίνετε, για να μάθει κάποιος κάτι πρέπει κάποιος να διδάξει. Εάν έχετε μια παρουσίαση που θέλετε να κάνετε σε ένα κοινό εκατομμυρίων και να αποκτήσετε παγκόσμια φήμη, τότε αυτό το άρθρο είναι για εσάς. Εδώ θα βρείτε οδηγίες βήμα προς βήμα για το πώς να φτιάξετε ένα βίντεο από την παρουσίασή σας.

Απορρίπτουμε τη διαδρομή της εγγραφής "σχολίων ήχου" στο PowerPoint και την εξαγωγή της παρουσίασης σε βίντεο ως ασήμαντη και δεν παρέχουμε το ένα δέκατο των δυνατοτήτων που απαιτούνται για ένα πραγματικά ωραίο βίντεο.

Αρχικά, ας αποφασίσουμε ποια πλαίσια χρειαζόμαστε:

  1. Οι πραγματικές διαφάνειες με φωνή
  2. αλλαγή διαφάνειας
  3. Αποσπάσματα από δημοφιλείς ταινίες
  4. Πολλά καρέ με το πρόσωπο του καθηγητή και την αγαπημένη του γάτα (προαιρετικά)

Δημιουργία δομής καταλόγου

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

Ο σκοπός των καταλόγων με τη σειρά της λίστας: ταινίες από τις οποίες θα αντλήσουμε εισαγωγικά (clipart), αποσπάσματα από το μελλοντικό μας βίντεο (κλιπ), βίντεο από την κάμερα (rec), διαφάνειες σε μορφή εικόνων (slide), ήχος (ήχος).

Κάνοντας μια παρουσίαση σε εικόνες

Για έναν πραγματικό χρήστη Linux με κόκκινα μάτια, η πραγματοποίηση μιας παρουσίασης με τη μορφή εικόνων δεν παρουσιάζει κανένα πρόβλημα. Επιτρέψτε μου απλώς να σας υπενθυμίσω ότι ένα έγγραφο σε μορφή pdf μπορεί να αναλυθεί σε εικόνες χρησιμοποιώντας την εντολή

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

Εάν δεν υπάρχει τέτοια εντολή, εγκαταστήστε το πακέτο μόνοι σας poppler-utils (οδηγίες για το Ubuntu, αν έχετε Arch, τότε ξέρετε πολύ καλά τι να κάνετε χωρίς εμένα).

Στο εξής, πιστεύω ότι το βίντεο είναι προετοιμασμένο σε μορφή HD Ready, δηλαδή 1280x720. Μια παρουσίαση με οριζόντια διάσταση 10 ιντσών παράγει ακριβώς αυτό το μέγεθος κατά την εκφόρτωση (δείτε την επιλογή -r 128).

Προετοιμασία του κειμένου

Εάν θέλετε να δημιουργήσετε πραγματικά υπέροχο υλικό, η ομιλία σας πρέπει να γραφτεί πρώτα. Σκέφτηκα επίσης ότι θα μπορούσα να μιλήσω το κείμενο χωρίς προετοιμασία, ειδικά επειδή έχω καλή εμπειρία στις διαλέξεις. Αλλά είναι άλλο να παίζεις ζωντανά και άλλο πράγμα να ηχογραφείς ένα βίντεο. Μην είστε τεμπέλης - ο χρόνος που αφιερώνετε στην πληκτρολόγηση θα αποδώσει πολλές φορές.

Διαλέξεις βίντεο: unix way

Εδώ είναι η μορφή εγγραφής μου. Ο αριθμός στον τίτλο είναι ίσος με τον αριθμό της διαφάνειας, οι διακοπές επισημαίνονται με κόκκινο. Οποιοσδήποτε επεξεργαστής είναι κατάλληλος για προετοιμασία, αλλά είναι καλύτερο να χρησιμοποιήσετε έναν πλήρη επεξεργαστή κειμένου - για παράδειγμα, Μόνο Γραφείο.

Φωνή πάνω από τις διαφάνειες

Τι να πω - ανοίξτε το μικρόφωνο και γράψτε :)

Η εμπειρία δείχνει ότι η ποιότητα εγγραφής ακόμη και από το φθηνότερο εξωτερικό μικρόφωνο είναι ασύγκριτα καλύτερη από ό,τι από το ενσωματωμένο μικρόφωνο ενός φορητού υπολογιστή. Αν θέλετε ποιοτικό εξοπλισμό, σας το προτείνω εδώ είναι αυτό το άρθρο.

Για ηχογράφηση χρησιμοποίησα συσκευή εγγραφής ήχου – μια πολύ απλή εφαρμογή για εγγραφή ήχου. Μπορείτε να το πάρετε, για παράδειγμα, εδώ:

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

Το κύριο πράγμα σε αυτό το βήμα είναι να ονομάσετε σωστά τα αρχεία. Το όνομα πρέπει να αποτελείται από τον αριθμό της διαφάνειας και τον αριθμό του τμήματος. Τα θραύσματα αριθμούνται με περιττούς αριθμούς - 1, 3, 5, κ.λπ. Έτσι, για τη διαφάνεια της οποίας το κείμενο φαίνεται στην εικόνα, θα δημιουργηθούν δύο αρχεία: 002-1.mp3 и 002-3.mp3.

Εάν εγγράψατε όλα τα βίντεο ταυτόχρονα σε ένα ήσυχο δωμάτιο, δεν χρειάζεται να κάνετε τίποτα περαιτέρω με αυτά. Εάν η εγγραφή έγινε σε πολλά βήματα, είναι καλύτερο να εξισορροπήσετε το επίπεδο έντασης:

mp3gain -r *.mp3

Utilities mp3 και πάλι Για κάποιο λόγο δεν υπάρχει στα τυπικά αποθετήρια, αλλά μπορείτε να το βρείτε εδώ:

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

Μετά από όλα αυτά, πρέπει να εγγράψετε ένα άλλο αρχείο με σιωπή. Είναι απαραίτητο να προσθέσετε ένα ηχητικό κομμάτι σε σιωπηλά βίντεο: εάν το ένα βίντεο έχει ηχητικό κομμάτι και το άλλο όχι, τότε είναι δύσκολο να κολλήσετε αυτά τα βίντεο μεταξύ τους. Η σιωπή μπορεί να εγγραφεί από ένα μικρόφωνο, αλλά είναι καλύτερο να δημιουργήσετε ένα αρχείο στο πρόγραμμα επεξεργασίας θράσος. Το μήκος του αρχείου πρέπει να είναι τουλάχιστον ένα δευτερόλεπτο (είναι δυνατά περισσότερα) και θα πρέπει να ονομαστεί σιωπή.mp3

Προετοιμασία βίντεο διακοπών

Εδώ όλα περιορίζονται μόνο από τη φαντασία σας. Μπορείτε να χρησιμοποιήσετε ένα πρόγραμμα επεξεργασίας για να επεξεργαστείτε βίντεο Avidemux. Μια φορά κι έναν καιρό ήταν στα τυπικά αποθετήρια, αλλά μετά για κάποιο λόγο κόπηκε. Αυτό δεν θα μας σταματήσει:

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

Υπάρχουν πολλές οδηγίες για την εργασία με αυτόν τον επεξεργαστή στο Διαδίκτυο και κατ 'αρχήν, όλα εκεί είναι διαισθητικά. Είναι σημαντικό να πληρούνται πολλές προϋποθέσεις.

Πρώτον, η ανάλυση βίντεο πρέπει να ταιριάζει με την ανάλυση του βίντεο στόχου. Για να το κάνετε αυτό, πρέπει να χρησιμοποιήσετε δύο φίλτρα στο "βίντεο εξόδου": swsResize για να αλλάξετε την ανάλυση και "προσθήκη πεδίων" για να μετατρέψετε μια σοβιετική ταινία "στενής μορφής" σε ευρεία μορφή. Όλα τα άλλα φίλτρα είναι προαιρετικά. Για παράδειγμα, εάν κάποιος δεν καταλαβαίνει γιατί η δήλωση του κ. Sharikov βρίσκεται στο υπό συζήτηση απόσπασμα, χρησιμοποιώντας το φίλτρο "προσθήκη λογότυπου", μπορείτε να επικαλύψετε το λογότυπο PostgreSQL πάνω από την "Καρδιά του Σκύλου".

Δεύτερον, όλα τα τμήματα πρέπει να χρησιμοποιούν τον ίδιο ρυθμό καρέ. Χρησιμοποιώ 25 καρέ το δευτερόλεπτο γιατί η κάμερα και οι παλιές σοβιετικές ταινίες μου δίνουν τόσα πολλά. Εάν η ταινία από την οποία κόβετε γυρίστηκε με διαφορετική ταχύτητα, χρησιμοποιήστε το φίλτρο Resample Video.

Τρίτον, όλα τα θραύσματα πρέπει να συμπιέζονται με τον ίδιο κωδικοποιητή και να συσκευάζονται στα ίδια δοχεία. Επομένως, σε Avidemux για τη μορφή, επιλέξτε βίντεο - "MPEG4 AVC (x264)", ήχος - "AAC (FAAC)", Μορφή εξόδου - "MP4 Muxer».

Τέταρτον, είναι σημαντικό να ονομάσετε σωστά τα κομμένα βίντεο. Το όνομα του αρχείου πρέπει να αποτελείται από τον αριθμό της διαφάνειας και τον αριθμό του τμήματος. Τα θραύσματα αριθμούνται με ζυγούς αριθμούς, ξεκινώντας από το 2. Έτσι, για το υπό συζήτηση πλαίσιο, το βίντεο με τη διακοπή θα πρέπει να ονομάζεται 002-2.mp4

Αφού τα βίντεο είναι έτοιμα, πρέπει να τα μεταφέρετε στον κατάλογο με θραύσματα. Ρυθμίσεις avidemux διαφέρουν από τις ρυθμίσεις ffmpeg από προεπιλογή με μυστηριώδεις παραμέτρους tbr, tbn, tbc. Δεν επηρεάζουν την αναπαραγωγή, αλλά δεν επιτρέπουν στα βίντεο να κολληθούν μεταξύ τους. Ας ξανακωδικοποιήσουμε λοιπόν:

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

Προφύλαξη οθόνης λήψης

Και εδώ, όλα είναι απλά: φωτογραφίζετε με φόντο κάποιο έξυπνο σχέδιο, βάζετε τα βίντεο που προκύπτουν σε έναν κατάλογο rec, και από εκεί μεταφέρετέ το στον κατάλογο με τμήματα. Οι κανόνες ονομασίας είναι οι ίδιοι όπως για τα εισαγωγικά διακοπής, η εντολή επανακωδικοποίησης είναι η εξής:

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

Εάν σκοπεύετε να ξεκινήσετε το βίντεο με την ομιλία σας, ονομάστε αυτό το κομμάτι 000-1.mp4

Κατασκευή πλαισίων από στατικές εικόνες

Ήρθε η ώρα να επεξεργαστείτε βίντεο από στατικές εικόνες και ήχο. Αυτό γίνεται με το ακόλουθο σενάριο:

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

Λάβετε υπόψη ότι η διάρκεια του αρχείου ήχου καθορίζεται πρώτα από το βοηθητικό πρόγραμμα σόξι, και στη συνέχεια γίνεται επεξεργασία του βίντεο της απαιτούμενης διάρκειας. Όλες οι συστάσεις που βρήκα είναι πιο απλές: αντί για σημαία -t ${διάρκεια} χρησιμοποιείται η σημαία - το πιο σύντομο. στην πραγματικότητα ffmpeg καθορίζει πολύ κατά προσέγγιση τη διάρκεια του mp3 και κατά την επεξεργασία, η διάρκεια του κομματιού ήχου μπορεί να διαφέρει πολύ (κατά ένα ή δύο δευτερόλεπτα) από τη διάρκεια του κομματιού βίντεο. Αυτό δεν έχει σημασία αν ολόκληρο το βίντεο αποτελείται από ένα μόνο πλαίσιο, αλλά όταν κολλάτε ένα τέτοιο βίντεο με διακοπές στο περίγραμμα, εμφανίζονται εξαιρετικά δυσάρεστα εφέ τραυλισμού.

Ένας άλλος τρόπος για να προσδιορίσετε τη διάρκεια ενός αρχείου mp3 είναι να χρησιμοποιήσετε mp3 πληροφορίες. Κάνει και λάθη, και μερικές φορές ffmpeg δίνει περισσότερα από mp3 πληροφορίες, μερικές φορές είναι το αντίστροφο, μερικές φορές και οι δύο λένε ψέματα - δεν παρατήρησα κανένα σχέδιο. Και εδώ σόξι λειτουργεί σωστά.

Για να εγκαταστήσετε αυτό το χρήσιμο βοηθητικό πρόγραμμα, κάντε το εξής:

sudo apt-get install sox libsox-fmt-mp3

Πραγματοποίηση μεταβάσεων μεταξύ διαφανειών

Μια μετάβαση είναι ένα σύντομο βίντεο στο οποίο μια διαφάνεια μετατρέπεται σε μια άλλη. Για να φτιάξουμε τέτοια βίντεο, παίρνουμε διαφάνειες ανά ζευγάρια και χρησιμοποιώντας ImageMagick μετατρέψτε το ένα στο άλλο:

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

Για κάποιο λόγο ήθελα η διαφάνεια να είναι διάσπαρτη με κουκκίδες και στη συνέχεια να συναρμολογηθεί η επόμενη διαφάνεια από τις τελείες και για αυτό έγραψα ένα σενάριο που ονομάζεται ξεθωριάζει.πλ Έχοντας ImageMagick, ένας πραγματικός χρήστης Linux θα δημιουργήσει οποιοδήποτε ειδικό εφέ, αλλά αν σε κάποιον αρέσει η ιδέα μου με το scattering, εδώ είναι το σενάριο:

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

Προσαρτούμε το τελικό βίντεο

Τώρα έχουμε όλα τα θραύσματα. Μεταβείτε στον κατάλογο κλιπ και συναρμολογήστε το έτοιμο φιλμ χρησιμοποιώντας δύο εντολές:

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

Απολαύστε την παρακολούθηση στους ευγνώμονες μαθητές σας!

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο