Video ma'ruzalar: unix usuli

Video ma'ruzalar: unix usuli
Karantin - bu nimanidir o'rganish uchun ajoyib vaqt. Biroq, siz tushunganingizdek, kimdir biror narsani o'rganishi uchun kimdir o'rgatishi kerak. Agar sizda millionlab auditoriyaga taqdim etmoqchi bo'lgan va butun dunyo bo'ylab shuhrat qozonmoqchi bo'lgan taqdimotingiz bo'lsa, unda bu maqola siz uchun. Bu yerda siz taqdimotingizdan video yaratish bo'yicha bosqichma-bosqich ko'rsatmalarni topasiz.

Biz PowerPoint-da "audio sharhlar"ni yozib olish va taqdimotni videoga eksport qilish yo'lini ahamiyatsiz deb hisoblaymiz va chinakam ajoyib video uchun zarur bo'lgan imkoniyatlarning o'ndan bir qismini ta'minlamaymiz.

Birinchidan, bizga qanday ramkalar kerakligini hal qilaylik:

  1. Ovozli slaydlar
  2. slaydni o'zgartirish
  3. Mashhur filmlardan iqtiboslar
  4. O'qituvchining yuzi va uning sevimli mushuki tasvirlangan bir nechta ramkalar (ixtiyoriy)

Katalog tuzilmasini yaratish

.
β”œβ”€β”€ clipart
β”œβ”€β”€ clips
β”œβ”€β”€ rec
β”œβ”€β”€ slide
└── sound

Ro'yxatga olish tartibidagi kataloglarning maqsadi: biz tirnoqlarni oladigan filmlar (klipart), kelajakdagi videomizning parchalari (kliplar), kameradan olingan videolar (rec), rasm ko'rinishidagi slaydlar (slayd), ovoz (tovush).

Rasmlarda taqdimot qilish

Haqiqiy qizil ko'zli Linux foydalanuvchisi uchun rasm shaklida taqdimot qilish hech qanday muammo tug'dirmaydi. Sizga shuni eslatib o'tamanki, pdf formatidagi hujjat buyruq yordamida tasvirlarga ajratilishi mumkin

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

Agar bunday buyruq bo'lmasa, paketni o'zingiz o'rnating poppler-utilitlar (Ubuntu uchun ko'rsatmalar; agar sizda Arch bo'lsa, mensiz nima qilishni juda yaxshi bilasiz).

Bu erda va bundan keyin men videoning HD Ready formatida, ya'ni 1280x720 formatida tayyorlanganiga ishonaman. Gorizontal o'lchami 10 dyuym bo'lgan taqdimot tushirilganda aynan shu hajmni beradi (-r 128 parametriga qarang).

Matnni tayyorlash

Agar siz haqiqatan ham ajoyib material yaratmoqchi bo'lsangiz, birinchi navbatda nutqingiz yozilishi kerak. Men ham matnni tayyorlanmasdan gapira olaman deb o'yladim, ayniqsa ma'ruza o'qishda yaxshi tajribam bor. Ammo jonli ijro etish bir narsa, video yozish boshqa narsa. Dangasa bo'lmang - yozish uchun sarflangan vaqt ko'p marta to'lanadi.

Video ma'ruzalar: unix usuli

Mana mening yozish formatim. Sarlavhadagi raqam slayd raqamiga teng, uzilishlar qizil rang bilan ta'kidlangan. Tayyorgarlik uchun har qanday muharrir mos keladi, ammo to'liq huquqli matn protsessorini olish yaxshiroqdir - masalan, FaqatOffice.

Slaydlar orqali ovoz

Nima deyishim mumkin - mikrofonni yoqing va yozing :)

Tajriba shuni ko'rsatadiki, hatto eng arzon tashqi mikrofondan ham yozib olish sifati noutbukning o'rnatilgan mikrofoniga qaraganda ancha yaxshi. Agar siz sifatli uskunani xohlasangiz, uni tavsiya qilaman mana bu maqola.

Yozib olish uchun men foydalanardim audio yozuvchisi – ovoz yozish uchun juda oddiy dastur. Buni, masalan, bu erda olishingiz mumkin:

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

Ushbu bosqichda asosiy narsa fayllarni to'g'ri nomlashdir. Ism slayd raqami va fragment raqamidan iborat bo'lishi kerak. Fragmentlar toq raqamlar bilan raqamlangan - 1, 3, 5 va hokazo. Shunday qilib, rasmda matni ko'rsatilgan slayd uchun ikkita fayl yaratiladi: 002-1.mp3 ΠΈ 002-3.mp3.

Agar siz barcha videolarni bir vaqtning o'zida tinch xonada yozib olgan bo'lsangiz, ular bilan boshqa hech narsa qilishingiz shart emas. Agar siz bir necha bosqichda yozgan bo'lsangiz, ovoz balandligini tenglashtirish yaxshiroqdir:

mp3gain -r *.mp3

Kommunal xizmatlar mp3 daromad Ba'zi sabablarga ko'ra u standart omborlarda emas, lekin uni bu erda olishingiz mumkin:

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

Bularning barchasidan so'ng, siz jimlik bilan boshqa faylni yozib olishingiz kerak. Ovozsiz videolarga ovozli trek qo'shish kerak: agar bitta videoda ovozli trek bo'lsa, ikkinchisida yo'q bo'lsa, bu videolarni bir-biriga yopishtirish qiyin. Sukunatni mikrofondan yozib olish mumkin, ammo faylni tahrirlovchida yaratish yaxshiroqdir Audacity. Fayl uzunligi kamida bir soniya bo'lishi kerak (ko'proq mumkin) va unga nom berilishi kerak sukunat.mp3

Uzilish videolari tayyorlanmoqda

Bu erda hamma narsa faqat sizning tasavvuringiz bilan cheklangan. Videolarni tahrirlash uchun muharrirdan foydalanishingiz mumkin Avidemux. Bir vaqtlar u standart omborlarda edi, lekin keyin negadir kesilgan. Bu bizni to'xtata olmaydi:

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

Internetda ushbu muharrir bilan ishlash bo'yicha ko'plab ko'rsatmalar mavjud va printsipial jihatdan u erda hamma narsa intuitivdir. Bir nechta shartlarga rioya qilish muhimdir.

Birinchidan, video o'lchamlari maqsadli video ruxsatiga mos kelishi kerak. Buni amalga oshirish uchun siz "chiqish videosida" ikkita filtrdan foydalanishingiz kerak: piksellar sonini o'zgartirish uchun swsResize va sovet "tor formatli" filmini keng formatga aylantirish uchun "maydonlarni qo'shish". Boshqa barcha filtrlar ixtiyoriy. Misol uchun, agar kimdir janob Sharikovning bayonoti muhokama qilinayotgan fragmentda nima uchun ekanligini tushunmasa, "logotip qo'shish" filtri yordamida siz PostgreSQL logotipini "It yuragi" ustiga qo'yishingiz mumkin.

Ikkinchidan, barcha fragmentlar bir xil kvadrat tezligidan foydalanishi kerak. Men soniyasiga 25 kadrdan foydalanaman, chunki kameram va eski sovet filmlari menga shunchalik koβ€˜p narsani beradi. Agar siz kesayotgan film boshqa tezlikda suratga olingan boΚ»lsa, β€œResample Video” filtridan foydalaning.

Uchinchidan, barcha bo'laklar bir xil kodek bilan siqilib, bir xil idishlarga qadoqlangan bo'lishi kerak. Shuning uchun, in Avidemux format uchun videoni tanlang - "MPEG4 AVC (x264)", audio - "AAC (FAAC)", chiqish formati - "MP4 Muxer".

To'rtinchidan, kesilgan videolarni to'g'ri nomlash muhimdir. Fayl nomi slayd raqami va fragment raqamidan iborat bo'lishi kerak. Fragmentlar 2 dan boshlab juft raqamlar bilan raqamlanadi. Shunday qilib, muhokama qilinayotgan kadr uchun uzilishli videoni chaqirish kerak. 002-2.mp4

Videolar tayyor bo'lgach, ularni bo'laklar bilan katalogga o'tkazishingiz kerak. Sozlamalar avidemux sozlamalardan farq qiladi ffmpeg sukut bo'yicha sirli parametrlar bilan tbr, tbn, tbc. Ular ijroga ta'sir qilmaydi, lekin ular videolarni bir-biriga yopishtirishga ruxsat bermaydi. Shunday qilib, qayta kodlaymiz:

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

Suratga olish ekrani

Bu erda ham hamma narsa oddiy: siz qandaydir aqlli sxema fonida suratga tushasiz, natijada olingan videolarni katalogga joylashtirasiz. tanlangan, va u yerdan uni fragmentlar bilan katalogga o'tkazing. Nomlash qoidalari uzilish tirnoqlari bilan bir xil, qayta kodlash buyrug'i quyidagicha:

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

Agar siz videoni nutqingiz bilan boshlashni rejalashtirmoqchi bo'lsangiz, ushbu fragmentga nom bering 000-1.mp4

Statik rasmlardan ramkalar yasash

Statik tasvirlar va tovushlardan videolarni tahrirlash vaqti keldi. Bu quyidagi skript yordamida amalga oshiriladi:

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

E'tibor bering, audio faylning davomiyligi birinchi navbatda yordamchi dastur tomonidan belgilanadi soxi, va keyin kerakli uzunlikdagi video tahrirlanadi. Men topgan barcha tavsiyalar oddiyroq: bayroq o'rniga -t ${duration} bayroq ishlatiladi - eng qisqa... Aslida ffmpeg mp3 uzunligini taxminan aniqlaydi va tahrirlash vaqtida audio trekning uzunligi video trek uzunligidan ancha farq qilishi mumkin (bir yoki ikki soniya). Butun video bitta kadrdan iborat bo'ladimi, bu muhim emas, lekin bunday videoni chegarada uzilishlar bilan yopishtirishda juda yoqimsiz qoqinish effektlari paydo bo'ladi.

mp3 faylning davomiyligini aniqlashning yana bir usuli - foydalanish mp3 ma'lumot. U ham xato qiladi va ba'zida ffmpeg dan ko'proq beradi mp3 ma'lumot, ba'zida buning aksi, ba'zida ikkalasi ham yolg'on gapirishadi - men hech qanday naqsh sezmadim. Va bu erda soxi to'g'ri ishlaydi.

Ushbu foydali yordam dasturini o'rnatish uchun quyidagilarni bajaring:

sudo apt-get install sox libsox-fmt-mp3

Slaydlar o'rtasida o'tishlarni amalga oshirish

O'tish - bu bir slayd boshqasiga aylanadigan qisqa video. Bunday videolarni yaratish uchun biz slaydlarni juft-juft qilib olamiz ImageMagick birini boshqasiga aylantiring:

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

Negadir men slaydni nuqtalar bilan sochilishini, keyin keyingi slaydni nuqtalardan yig'ishini xohlardim va buning uchun stsenariy yozdim. fade.pl Ega ImageMagick, haqiqiy Linux foydalanuvchisi har qanday maxsus effekt yaratadi, lekin agar kimdir mening g'oyamni tarqatish bilan yoqtirsa, bu erda skript:

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

Biz tayyor videoni o'rnatamiz

Endi bizda barcha qismlar mavjud. Katalogga o'ting kliplarni va tayyor plyonkani ikkita buyruq yordamida yig'ing:

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

Rahmatli talabalaringizni tomosha qilishdan zavqlaning!

Manba: www.habr.com

a Izoh qo'shish