Видео предавања: unix way

Видео предавања: unix way
Карантинот е прекрасно време да научите нешто. Сепак, како што разбирате, за некој да научи нешто, некој мора да предава. Ако имате презентација што сакате да ја одржите пред милионска публика и да стекнете светска слава, тогаш оваа статија е за вас. Овде ќе најдете чекор-по-чекор инструкции како да направите видео од вашата презентација.

Патот на снимање „аудио коментари“ во PowerPoint и извезување на презентацијата во видео го отфрламе како тривијален и не обезбедуваме десетина од можностите потребни за навистина кул видео.

Прво, да одлучиме кои рамки ни се потребни:

  1. Вистинските слајдови со глас
  2. Промена на слајдови
  3. Цитати од популарни филмови
  4. Неколку рамки со лицето на предавачот и неговата омилена мачка (по избор)

Креирање структура на директориуми

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

Целта на директориумите по редослед на наведување: филмови од кои ќе влечеме цитати (клипарт), фрагменти од нашето идно видео (клипови), видеа од камерата (rec), слајдови во форма на слики (слајд), звук (звук).

Изработка на презентација во слики

За вистински црвени очи корисник на Линукс, правењето презентација во форма на слики не претставува никакви проблеми. Само да ве потсетам дека документот во pdf формат може да се анализира во слики со помош на командата

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

Ако не постои таква команда, сами инсталирајте го пакетот поплер-прибор (инструкции за Ubuntu; ако имате Arch, тогаш совршено знаете што да правите без мене).

Овде и понатаму, верувам дека видеото е подготвено во HD Ready формат, односно 1280x720. Презентацијата со хоризонтална големина од 10 инчи ја дава токму оваа големина кога се истоварува (видете ја опцијата -r 128).

Подготовка на текстот

Ако сакате да направите навистина одличен материјал, прво треба да го напишете вашиот говор. Мислев и дека можам да го зборувам текстот без подготовка, особено што имам добро искуство во предавање. Но, едно е да се настапува во живо, а друго е да се снима видео. Не бидете мрзливи - времето поминато во пишување ќе ви се исплати многукратно.

Видео предавања: unix way

Еве го мојот формат за снимање. Бројот во насловот е еднаков на бројот на слајдот, прекините се означени со црвено. Секој уредник е погоден за подготовка, но подобро е да земете полноправен процесор на текст - на пример, OnlyOffice.

Глас преку слајдовите

Што да кажам - вклучете го микрофонот и напишете :)

Искуството покажува дека квалитетот на снимањето дури и од најевтиниот надворешен микрофон е неспоредливо подобар отколку од вградениот микрофон на лаптопот. Ако сакате квалитетна опрема, ја препорачувам тука е овој напис.

За снимање користев аудио-рекордер – многу едноставна апликација за снимање звук. Можете да го земете, на пример, овде:

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

Комунални услуги 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 за промена на резолуцијата и „додавање полиња“ за да го претворите советскиот филм со „тесен формат“ во широк формат. Сите други филтри се опционални. На пример, ако некој не разбира зошто изјавата на г-дин Шариков е во фрагментот што се дискутира, користејќи го филтерот „додај лого“, можете да го преклопите логото PostgreSQL на врвот на „Кучешко срце“.

Второ, сите фрагменти мора да користат иста стапка на слики. Користам 25 кадри во секунда затоа што мојата камера и старите советски филмови ми даваат толку многу. Ако филмот од кој го сечете е снимен со различна брзина, користете го филтерот Resample Video.

Трето, сите фрагменти мора да бидат компресирани со ист кодек и спакувани во истите контејнери. Затоа, во Avidemux за формат, изберете видео - „MPEG4 AVC (x264)", аудио - "AAC (FAAC)", излезен формат - "MP4 Муксер".

Четврто, важно е правилно да се именуваат исечените видеа. Името на датотеката мора да се состои од бројот на слајдот и бројот на фрагментот. Фрагментите се нумерираат со парни броеви, почнувајќи од 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

Правење транзиции помеѓу слајдови

Транзиција е кратко видео во кое еден слајд се претвора во друг. За да направиме такви видеа, земаме слајдови во парови и користејќи сликата преобрази едно во друго:

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

Поради некоја причина сакав слајдот да биде расфрлен со точки, а потоа следниот слајд да се состави од точките, и за ова напишав скрипта наречена избледуваат.pl Имајќи сликата, вистински корисник на Линукс ќе создаде каков било специјален ефект, но ако некому му се допаѓа мојата идеја со расфрлање, еве ја скриптата:

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

Додадете коментар