Videoleksionet: unix way

Videoleksionet: unix way
Karantina - një kohë e shkëlqyer për të mësuar diçka. Megjithatë, siç e kuptoni, për të mësuar dikush duhet të mësojë dikë. Nëse keni një prezantim me të cilin dëshironi të paraqiteni për një audiencë prej një milioni, duke fituar famë botërore, atëherë kjo artikull është për ju. Këtu do të gjeni një udhëzues hap pas hapi se si të bëni një video nga prezantimi tuaj.

Rruga e regjistrimit të "komenteve audio" në PowerPoint dhe eksportimi i prezantimit në video është një ide e zakonshme dhe nuk ofron asnjë nga mundësitë e nevojshme për një video të vërtetë të shkëlqyer.

Fillimisht, le të përcaktojmë se cilat skena na nevojiten:

  1. Pikërisht slidet me zë në sfond
  2. Ndryshimi i slideve
  3. Citatet ndërprerëse nga filmat e njohur
  4. Disa skena me fytyrën e lektorit dhe macen e tij të preferuar (opsionale)

Krijoni strukturën e kataloheve

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

Qëllimi i katalogeve në rendin e listuar: filmat nga të cilët do të marrim citatet (clipart), fragmente të videos tonë të ardhshme (clips), videot nga kamera (rec), slidet si imazhe (slide), zëri (sound).

Krijoni prezantimin në imazhe

Për një linuxoid të vërtetë, krijimi i një prezantimi në formë imazhesh nuk paraqet asnjë problem. Ju rikujtoj se dokumenti në format pdf mund të çlohet në imazhe me komandën

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

Nëse nuk keni këtë komandë, instaloni paketën poppler-utils (udhëzime për Ubuntu; nëse keni Arch, ju e dini mirë se çfarë të bëni).

Këtu dhe më tutje, unë mendoj se videoja po përgatitet në format HD Ready, pra 1280×720. Prezantimi me gjerësi 10 inç jep saktësisht këtë madhësi (shih parametrin -r 128).

Përgatitni tekstin

Nëse dëshironi të krijoni një material të vërtetë të shkëlqyer, duhet ta shkruani fjalimin tuaj më parë. Edhe unë mendoja se do të mundja ta regjistroja tekstin pa përgatitje, veçanërisht pasi përvojen time në mbajtjen e leksioneve është e mirë. Por një gjë është të flasësh në jet, dhe një gjë tjetër është të regjistrosh një video. Mos e lini pas dore - koha e harxhuar për të shkruar tekstin do të shpërblehet shumëfish.

Videoleksionet: unix way

Kjo është formatimi im i regjistrimit. Numri në titull është i barabartë me numrin e sliden, dhe ndërprerjet janë theksuar me të kuqe. Çdo editor është i pranueshëm për përgatitje, por është më mirë të përdorni një procesor teksti të plotë - për shembull, OnlyOffice.

Regjistroni slidet

Çfarë mund të them - thjesht aktivizoni mikrofonin dhe regjistroni 🙂

Eksperienca tregon se cilësia e regjistrimit edhe nga mikrofonët më të lirë të jashtëm është shumë më e mirë sesa nga mikrofonët e ndërtuar në laptop. Nëse dëshironi pajisje cilësore, unë rekomandoj këtë artikull.

Për regjistrim kam përdorur audio-recorder - një aplikacion tejet i thjeshtë për regjistrimin e zërit. Mund ta merrni, për shembull, këtu:

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

E rëndësishme në këtë hap është emërtimi i saktë i skedarëve. Emri duhet të përbëhet nga numri i sliden dhe numri i fragmentit. Fragmentet numërohen me numra të çuditshëm - 1, 3, 5, etj. Pra, për sliden, teksti i të cilës jepet në imazh, do të krijohen dy skedarë: 002-1.mp3 dhe 002-3.mp3.

Nëse e keni regjistruar të gjitha videot njëherë në një dhomë të qetë, nuk keni nevojë të bëni asgjë tjetër me ato. Nëse keni regjistruar në disa seanca, është më mirë të rregulloni nivelin e zërit:

mp3gain -r *.mp3

Utilitarët mp3gain për një arsye të panjohur nuk është në depot standarde, por mund ta merrni këtu:

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

Pas gjithë kësaj, duhet të regjistroni një skedar tjetër me heshtje. Ai është e nevojshme për të shtuar shtresën audio në videot e heshtura: nëse në një video ka një shtresë audio, kurse në tjetren nuk ka, është e vështirë të bashkohen këto videoklipe. Endeheshtja mund të regjistrohet me mikrofon, por është më mirë të krijoni një skedar në editor Audacity. Gjatësia e skedarit duhet të jetë të paktën një sekondë (mund të jetë më shumë), dhe emri i tij duhet të jetë silence.mp3

Përgatitni videot ndërprerëse

Këtu gjithçka është e kufizuar vetëm nga imagjinata juaj. Për redaktimin e videos mund të përdorni editorin Avidemux. Njëherë ai ishte në depot standarde, por më pas u hoq për një arsye. Kjo nuk na ndalon:

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

Instruksionet për përdorimin e këtij editori janë të shumta në internet dhe në fakt, gjithçka është intuitivisht e kuptueshme. E rëndësishme është të përmbushen disa kushte.

Së pari, rezolucioni i videos duhet të jetë i njëjtë me rezolucionin e synuar të videos. Për këtë, në "video për dalje" duhet të përdorni dy filtra: swsResize për të ndryshuar rezolucionin dhe "shtimin e fushave" për të bërë nga filmi "i ngushtë" sovjetik një film në format të gjerë. Të gjitha filtrat e tjerë - sipas dëshirës. Për shembull, nëse dikush nuk e kupton pse në fragmentin në diskutim është shprehja e z. Sharikov, me filtrin "shto logon" mund të mbivendosni logon e PostgreSQL mbi "Zemrën e qenit".

Së dyti, të gjitha fragmenteve duhet t'u përdoret e njëjta shpejtësi kadrash. Unë përdor 25 kadrash në sekondë, sepse kjo është ajo që ofron kamera ime dhe filmat e vjetër sovjetik. Nëse filmi nga i cili po nxirrni një kadër është xhiruar me një shpejtësi tjetër, përdorni filtrin "risampilo video".

Së treti, të gjitha fragmentet duhet të kompresohen me të njëjtin kodek dhe të paketohen në kontejnerë të njëjtë. Prandaj në Avidemux për formatin zgjidhni video – "Mpeg4 AVC (x264)", audio – "AAC (Faac)", formati i daljes – "MP4 Muxer"».

Së katërti, është e rëndësishme të emërohen saktë videot e nxjerra. Emri i skedarit duhet të përbëhet nga numri i slajdit dhe numri i fragmentit. Fragmentet numërohen me numra çift, duke filluar nga 2. Pra, për kadri që po diskutohet, video me ndërprerje duhet të quhet 002-2.mp4

Pasi që videot janë gati, duhet t'i transferoni ato në katalogun me fragmente. Cilësimet avidemux dallohen nga cilësimet ffmpeg të zakonshme me parametra misteriozë tbr, tbn, tbc. Ata nuk ndikojnë në riprodhim, por nuk lejojnë bashkimin e videove. Prandaj, ne rikodojmë:

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

Shtojmë intro

Këtu gjithashtu është e thjeshtë: xhiroheni në një sfond të një skeme të mençur, mbledhni videot e marra në katalogun rec, dhe nga aty i transferoni në katalogun me fragmente. Rregullat e emërtesës janë të njëjta si për citatat ndërpreruese; komanda për rikodim është:

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

Nëse planifikoni të filloni videon me paraqitjen tuaj, quani këtë fragment 000-1.mp4

Krijojmë kadra nga imazhe statike

Ka ardhur koha të montoni videot nga imazhe statike dhe zë. Kjo bëhet me këtë skript:

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

Kujdes, së pari përcaktohet gjatësia e skedarit audio me utilitarin soxi, dhe pastaj montoni videon me gjatësi të nevojshme. Të gjitha rekomandimet që kam gjetur janë më të thjeshta: në vend të flagut -t ${duration} përdoret flagu -shortest.Në të vërtetë, ffmpeg përcakton gjatësi të mp3 shumë përafërsisht, dhe kur montoni, gjatësi e shtegu audio mund të ndryshojë ndjeshëm (me një ose dy sekonda) nga gjatësi e shtegut video. Kjo nuk ka rëndësi nëse e gjithë video përbëhet nga një kadër të vetëm, por kur bashkoni një video të tillë me ndërprerje në kufirin, ndodhin efekte të pakëndshme me bllokim.

Një tjetër mënyrë për të përcaktuar gjatësi të skedarit mp3 – është përdorimi i mp3info.Ajo gjithashtu gabon, ndonjëherë ffmpeg jep më shumë se mp3info., ndonjëherë anasjelltas, ndonjëherë të dyja gënjejnë – nuk kam vërejtur rregulla të qarta. Por, soxi punon saktë.

Për të instaluar këtë utilitar të dobishëm, bëni kështu:

sudo apt-get install sox libsox-fmt-mp3

Krijojmë kalime mes slajdeve

Kalimi – është një video e shkurtër, ku një slajd kthehet në një tjetër. Për të prodhuar këto video, marrim slajdet çift dhe me ndihmën e imagemagick i kthejmë njëri-tjetrit:

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

Më është dukur se është për të dëshiruar që slajdi të shpërbëhet në pika, dhe më pas nga pikat të mbledhë slajdin tjetër, dhe për këtë shkak kam shkruar një skript të quajtur fade.pl. Duke pasur imagemagick, një linuksoid i vërtetë do të krijojë çdo efekt të veçantë, por nëse dikujt i pëlqen ideja ime për shpërbërje, ja skripti:

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

Montojmë videon e përfunduar

Tani kemi të gjitha fragmentet. Kalojmë në katalogun clips dhe ndërtojmë filmin e gatshëm me dy komanda:

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

Të kënaqeni nga shikimi nga nxënësit tuaj të falenderuar!

Burimi: habr.com

Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë 🔥 Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë | ProHoster