Видеолекциялар: unix жолу

Видеолекциялар: unix жолу
Карантин бир нерсени үйрөнүү үчүн эң сонун убакыт. Бирок, сиз түшүнгөндөй, кимдир бирөө бир нерсени үйрөнүү үчүн, кимдир бирөө үйрөтүшү керек. Эгерде сизде миллиондогон аудиторияга тартуулап, дүйнөлүк атак-даңкка ээ болгуңуз келген презентацияңыз болсо, анда бул макала сиз үчүн. Бул жерде сиз презентацияңыздан видеону кантип жасоо боюнча кадам-кадам нускамаларды таба аласыз.

Биз PowerPoint программасына "аудио комментарийлерди" жаздыруу жана презентацияны видеого экспорттоо жолун жокко чыгарабыз жана чындап эле сонун видео үчүн зарыл болгон мүмкүнчүлүктөрдүн ондон бир бөлүгүн камсыз кылбайбыз.

Биринчиден, бизге кандай рамкалар керек экенин чечели:

  1. Добуш берүү менен чыныгы слайддар
  2. слайд өзгөртүү
  3. Популярдуу тасмалардан цитаталар
  4. Лектордун жүзү жана анын сүйүктүү мышыгы менен бир нече кадр (милдеттүү эмес)

Каталог структурасын түзүү

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

Тизме тартиби боюнча каталогдордун максаты: биз цитаталарды чыгара турган тасмалар (клиптер), келечектеги видеобуздун фрагменттери (клиптер), камерадан алынган видеолор (rec), сүрөт түрүндөгү слайддар (слайд), үн (үн).

Сүрөттө презентация жасоо

Чыныгы кызыл көздүү Linux колдонуучусу үчүн сүрөттөр түрүндө презентация жасоо эч кандай көйгөй жаратпайт. Эскерте кетсек, PDF форматындагы документти буйрукту колдонуу менен сүрөттөргө талдоо мүмкүн

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

Эгерде мындай буйрук жок болсо, пакетти өзүңүз орнотуңуз poppler-utils (Ubuntu үчүн нускамалар; эгер сизде Arch болсо, анда менсиз эмне кылууну жакшы билесиз).

Бул жерде жана андан ары, мен видео HD Ready форматында, б.а. 1280x720 даярдалган деп ишенем. Горизонталдык өлчөмү 10 дюйм болгон презентация түшүрүлгөндө дал ушул өлчөмдү берет (-r 128 параметрин караңыз).

Текстти даярдоо

Эгер сиз чындап эле сонун материал жасагыңыз келсе, анда сөзүңүз биринчи жазылышы керек. Мен да текстти даярданбай эле айта алам деп ойлогом, айрыкча лекция окууда жакшы тажрыйбам бар. Бирок жандуу аткаруу бир нерсе, видеого тартуу башка нерсе. Жалкоо болбоңуз - терүүгө кеткен убакыт көп эсе пайда берет.

Видеолекциялар: unix жолу

Мына менин жаздыруу форматым. Аталышындагы сан слайддын номерине барабар, үзгүлтүктөр кызыл түс менен белгиленет. Даярдоо үчүн каалаган редактор ылайыктуу, бирок толук кандуу тексттик процессорду алуу жакшы - мисалы, 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

коммуналдык mp3gain Эмнегедир ал стандарттык репозиторийлерде эмес, бирок сиз аны бул жерден ала аласыз:

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 кадрды колдоном, анткени менин фотоаппаратым жана эски советтик тасмалар мага ушунча нерсени берет. Эгер сиз кесип жаткан тасма башка ылдамдыкта тартылган болсо, Reample 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

Экран сактагычтарды тартуу

Бул жерде да баары жөнөкөй: сиз кандайдыр бир акылдуу схеманын фонунда тартасыз, алынган видеолорду каталогго саласыз. ЭТР, жана ал жерден аны фрагменттери бар каталогго өткөрүңүз. Ат коюу эрежелери үзгүлтүккө учураган тырмакчалардагыдай эле, кайра коддоо буйругу төмөнкүдөй:

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

Үн файлынын узактыгы алгач утилита тарабынан аныкталаарын эске алыңыз soxi, анан керектүү узундуктагы видео монтаждалат. Мен тапкан бардык сунуштар жөнөкөй: желектин ордуна -t ${duration} желек колдонулат - эң кыска... Чындыгында ffmpeg mp3 узундугун болжол менен аныктайт, ал эми монтаждоо учурунда аудио тректин узундугу видео тректин узундугунан бир топ айырмаланышы мүмкүн (бир же эки секундга). Бул видеонун бүтүндөй бир кадрдан турганы маанилүү эмес, бирок чек арадагы үзгүлтүктөр менен мындай видеону чаптаганда, өтө жагымсыз кекечтик эффекттери пайда болот.

mp3 файлынын узактыгын аныктоонун дагы бир жолу - бул колдонуу mp3info. Ал да ката кетирет, кээде ffmpeg караганда көбүрөөк берет mp3info, Кээде тескерисинче, кээде экөө тең калп айтышат - мен эч кандай үлгү байкаган жокмун. Мынакей soxi туура иштейт.

Бул пайдалуу утилитаны орнотуу үчүн, муну жасаңыз:

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}

Мен эмнегедир слайддын чекиттер менен чачыранды болушун, анан кийинки слайд чекиттерден чогултулушун кааладым, бул үчүн мен сценарий жаздым. fade.pl бар ImageMagick, чыныгы Linux колдонуучусу кандайдыр бир өзгөчө эффект жаратат, бирок кимдир бирөө менин идеямды чачыратуу менен жакса, бул жерде сценарий:

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

Ыраазы болгон студенттериңизди көрүүдөн ырахат алыңыз!

Source: www.habr.com

Комментарий кошуу