Kuliah video: cara unix

Kuliah video: cara unix
Kuarantin adalah masa yang baik untuk belajar sesuatu. Walau bagaimanapun, seperti yang anda faham, untuk seseorang mempelajari sesuatu, seseorang mesti mengajar. Jika anda mempunyai pembentangan yang ingin anda berikan kepada berjuta-juta penonton dan mendapat kemasyhuran di seluruh dunia, maka artikel ini adalah untuk anda. Di sini anda akan menemui arahan langkah demi langkah tentang cara membuat video daripada pembentangan anda.

Kami mengetepikan laluan merakam "komen audio" dalam PowerPoint dan mengeksport pembentangan ke video sebagai remeh dan tidak menyediakan sepersepuluh daripada keupayaan yang diperlukan untuk video yang benar-benar hebat.

Mula-mula, mari kita tentukan bingkai yang kita perlukan:

  1. Slaid sebenar dengan alih suara
  2. Menukar slaid
  3. Petikan daripada filem popular
  4. Beberapa bingkai dengan wajah pensyarah dan kucing kegemarannya (pilihan)

Mencipta struktur direktori

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

Tujuan direktori dalam susunan penyenaraian: filem dari mana kami akan menarik petikan (klipart), serpihan video masa depan kami (klip), video dari kamera (rec), slaid dalam bentuk gambar (slaid), bunyi (bunyi).

Membuat pembentangan dalam gambar

Bagi pengguna Linux bermata merah sebenar, membuat persembahan dalam bentuk gambar tidak mendatangkan sebarang masalah. Izinkan saya hanya mengingatkan anda bahawa dokumen dalam format pdf boleh dihuraikan ke dalam imej menggunakan arahan

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

Jika tiada arahan sedemikian, pasang sendiri pakej tersebut popler-utils (arahan untuk Ubuntu; jika anda mempunyai Arch, maka anda tahu betul apa yang perlu dilakukan tanpa saya).

Di sini dan seterusnya, saya percaya bahawa video itu disediakan dalam format Sedia HD, iaitu 1280x720. Persembahan dengan saiz mendatar 10 inci memberikan saiz ini dengan tepat apabila dipunggah (lihat pilihan -r 128).

Menyediakan teks

Jika anda ingin membuat bahan yang benar-benar hebat, ucapan anda perlu ditulis terlebih dahulu. Saya juga berpendapat bahawa saya boleh bercakap teks tanpa persediaan, terutamanya kerana saya mempunyai pengalaman yang baik dalam syarahan. Tetapi satu perkara untuk membuat persembahan secara langsung, dan satu lagi perkara untuk merakam video. Jangan malas - masa yang dihabiskan untuk menaip akan berbaloi berlipat kali ganda.

Kuliah video: cara unix

Berikut ialah format rakaman saya. Nombor dalam tajuk adalah sama dengan nombor slaid, gangguan diserlahkan dengan warna merah. Mana-mana editor sesuai untuk penyediaan, tetapi lebih baik menggunakan pemproses kata yang lengkap - contohnya, OnlyOffice.

Suarakan pada slaid

Apa yang boleh saya katakan - hidupkan mikrofon dan tulis :)

Pengalaman menunjukkan bahawa kualiti rakaman walaupun daripada mikrofon luaran yang paling murah adalah jauh lebih baik daripada mikrofon terbina dalam komputer riba. Jika anda mahukan peralatan yang berkualiti, saya mengesyorkannya di sini adalah artikel ini.

Untuk rakaman saya gunakan perakam audio – aplikasi yang sangat mudah untuk rakaman bunyi. Anda boleh mengambilnya, sebagai contoh, di sini:

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

Perkara utama pada langkah ini ialah menamakan fail dengan betul. Nama mesti terdiri daripada nombor slaid dan nombor serpihan. Serpihan dinomborkan dengan nombor ganjil - 1, 3, 5, dsb. Jadi, untuk slaid, teks yang ditunjukkan dalam gambar, dua fail akan dibuat: 002-1.mp3 ΠΈ 002-3.mp3.

Jika anda merakam semua video serentak di dalam bilik yang sunyi, anda tidak perlu melakukan apa-apa lagi dengan mereka. Jika anda merakam dalam beberapa langkah, adalah lebih baik untuk menyamakan tahap kelantangan:

mp3gain -r *.mp3

Utiliti mp3gain Atas sebab tertentu ia tiada dalam repositori standard, tetapi anda boleh mendapatkannya di sini:

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

Selepas semua ini, anda perlu merakam fail lain dengan senyap. Ia adalah perlu untuk menambah trek bunyi pada video senyap: jika satu video mempunyai trek bunyi dan yang lain tidak, maka sukar untuk melekatkan video ini bersama-sama. Kesunyian boleh dirakam dari mikrofon, tetapi lebih baik membuat fail dalam editor Keberanian. Panjang fail hendaklah sekurang-kurangnya satu saat (lebih banyak mungkin), dan ia harus dinamakan senyap.mp3

Menyediakan video gangguan

Di sini semuanya terhad hanya oleh imaginasi anda. Anda boleh menggunakan editor untuk mengedit video Avidemux. Pada suatu masa dahulu ia berada dalam repositori standard, tetapi kemudian atas sebab tertentu ia telah dipotong. Ini tidak akan menghalang kami:

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

Terdapat banyak arahan untuk bekerja dengan editor ini di Internet, dan pada dasarnya, semua yang ada adalah intuitif. Adalah penting untuk memenuhi beberapa syarat.

Pertama, resolusi video mesti sepadan dengan resolusi video sasaran. Untuk melakukan ini, anda perlu menggunakan dua penapis dalam "video output": swsResize untuk menukar resolusi dan "menambah medan" untuk menukar filem "format sempit" Soviet menjadi format yang luas. Semua penapis lain adalah pilihan. Sebagai contoh, jika seseorang tidak faham mengapa kenyataan Encik Sharikov terdapat dalam serpihan yang sedang dibincangkan, menggunakan penapis "tambah logo", anda boleh tindih logo PostgreSQL di atas "Dog Heart".

Kedua, semua serpihan mesti menggunakan kadar bingkai yang sama. Saya menggunakan 25 bingkai sesaat kerana kamera saya dan filem Soviet lama memberi saya sebanyak itu. Jika filem yang anda potong telah dirakam pada kelajuan yang berbeza, gunakan penapis Video Resample.

Ketiga, semua serpihan mesti dimampatkan dengan codec yang sama dan dibungkus dalam bekas yang sama. Oleh itu dalam Avidemux untuk format, pilih video – β€œMpeg4 AVC (x264)", audio - "AAC (FAAC)", format output - "MP4 Muxer'.

Keempat, adalah penting untuk menamakan video yang dipotong dengan betul. Nama fail mesti terdiri daripada nombor slaid dan nombor serpihan. Serpihan dinomborkan dengan nombor genap, bermula dari 2. Oleh itu, untuk bingkai yang dibincangkan, video dengan gangguan harus dipanggil 002-2.mp4

Selepas video siap, anda perlu memindahkannya ke direktori dengan serpihan. tetapan avidemux berbeza daripada tetapan ffmpeg secara lalai dengan parameter misteri tbr, tbn, tbc. Mereka tidak menjejaskan main balik, tetapi mereka tidak membenarkan video dilekatkan bersama. Jadi mari kita kod semula:

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

Merakam screensaver

Di sini juga, segala-galanya adalah mudah: anda merakam berlatarbelakangkan beberapa skema pintar, meletakkan video yang terhasil dalam katalog rec, dan dari sana pindahkannya ke direktori dengan serpihan. Peraturan penamaan adalah sama seperti petikan gangguan, arahan pengekodan semula adalah seperti berikut:

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

Jika anda bercadang untuk memulakan video dengan ucapan anda, namakan serpihan ini 000-1.mp4

Membuat bingkai daripada gambar statik

Sudah tiba masanya untuk mengedit video daripada imej dan bunyi statik. Ini dilakukan dengan skrip berikut:

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

Sila ambil perhatian bahawa tempoh fail audio ditentukan terlebih dahulu oleh utiliti soxi, dan kemudian video dengan panjang yang diperlukan diedit. Semua pengesyoran yang saya temui adalah lebih mudah: bukannya bendera -t ${duration} bendera digunakan -paling pendek. Sebenarnya ffmpeg menentukan panjang mp3 lebih kurang, dan semasa pengeditan, panjang trek audio boleh sangat berbeza (dengan satu atau dua saat) daripada panjang trek video. Ini tidak kira jika keseluruhan video terdiri daripada satu bingkai, tetapi apabila anda melekatkan video sedemikian dengan gangguan di sempadan, kesan gagap yang sangat tidak menyenangkan berlaku.

Satu lagi cara untuk menentukan tempoh fail mp3 adalah dengan menggunakan mp3info. Dia juga membuat kesilapan, dan kadang-kadang ffmpeg memberi lebih daripada mp3info, kadang-kadang sebaliknya, kadang-kadang mereka berdua berbohong - saya tidak perasan sebarang corak. Dan di sini soxi berfungsi dengan betul.

Untuk memasang utiliti berguna ini, lakukan ini:

sudo apt-get install sox libsox-fmt-mp3

Membuat peralihan antara slaid

Peralihan ialah video pendek di mana satu slaid bertukar menjadi yang lain. Untuk membuat video sedemikian, kami mengambil slaid secara berpasangan dan menggunakan ImageMagick mengubah satu kepada yang lain:

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

Atas sebab tertentu saya mahu slaid bertaburan dengan titik, dan kemudian slaid seterusnya akan dipasang dari titik, dan untuk ini saya menulis skrip yang dipanggil fade.pl Mempunyai ImageMagick, pengguna Linux sebenar akan mencipta sebarang kesan khas, tetapi jika seseorang menyukai idea saya dengan penyebaran, berikut ialah skripnya:

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

Kami memasang video yang telah siap

Sekarang kita mempunyai semua serpihan. Pergi ke katalog klip dan pasang filem siap menggunakan dua arahan:

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

Selamat menonton kepada pelajar anda yang berterima kasih!

Sumber: www.habr.com

Tambah komen