Video ceramah: cara unix

Video ceramah: cara unix
Karantina adalah saat yang tepat untuk mempelajari sesuatu. Namun, seperti yang Anda pahami, agar seseorang dapat mempelajari sesuatu, seseorang harus mengajar. Jika Anda memiliki presentasi yang ingin Anda berikan kepada jutaan penonton dan mendapatkan ketenaran di seluruh dunia, maka artikel ini cocok untuk Anda. Di sini Anda akan menemukan petunjuk langkah demi langkah tentang cara membuat video dari presentasi Anda.

Kami menganggap jalur perekaman "komentar audio" di PowerPoint dan mengekspor presentasi ke video sebagai hal yang sepele dan tidak memberikan sepersepuluh dari kemampuan yang diperlukan untuk membuat video yang benar-benar keren.

Pertama, mari kita tentukan bingkai apa yang kita butuhkan:

  1. Slide sebenarnya dengan sulih suara
  2. perubahan slide
  3. Kutipan dari film populer
  4. Beberapa frame dengan wajah dosen dan kucing kesayangannya (opsional)

Membuat struktur direktori

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

Tujuan dari direktori dalam urutan daftar: film dari mana kita akan mengambil kutipan (clipart), penggalan video masa depan kita (klip), video dari kamera (rekaman), slide dalam bentuk gambar (slide), suara (suara).

Membuat presentasi dalam gambar

Bagi pengguna Linux yang benar-benar bermata merah, membuat presentasi dalam bentuk gambar tidaklah menjadi masalah. Izinkan saya mengingatkan Anda bahwa dokumen dalam format pdf dapat diurai menjadi gambar menggunakan perintah

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

Jika tidak ada perintah seperti itu, instal sendiri paketnya poppler-utils (instruksi untuk Ubuntu; jika Anda memiliki Arch, maka Anda tahu betul apa yang harus dilakukan tanpa saya).

Selanjutnya, saya yakin video tersebut disiapkan dalam format HD Ready, yaitu 1280x720. Presentasi dengan ukuran horizontal 10 inci memberikan ukuran yang persis sama saat dibongkar (lihat opsi -r 128).

Mempersiapkan teks

Jika Anda ingin membuat materi yang sangat bagus, pidato Anda perlu ditulis terlebih dahulu. Saya juga berpikir bahwa saya dapat mengucapkan teks tersebut tanpa persiapan, apalagi saya memiliki pengalaman yang baik dalam mengajar. Namun tampil live adalah satu hal, dan merekam video adalah satu hal. Jangan malas – waktu yang dihabiskan untuk mengetik akan membuahkan hasil berkali-kali lipat.

Video ceramah: cara unix

Ini format rekaman saya. Nomor pada judul sama dengan nomor slide, interupsi disorot dengan warna merah. Editor apa pun cocok untuk persiapan, tetapi lebih baik menggunakan pengolah kata yang lengkap - misalnya, OnlyOffice.

Suarakan melalui slide

Apa yang bisa saya katakan - nyalakan mikrofon dan tulis :)

Pengalaman menunjukkan bahwa kualitas rekaman bahkan dari mikrofon eksternal termurah pun jauh lebih baik daripada mikrofon internal laptop. Jika Anda menginginkan peralatan berkualitas, saya merekomendasikannya di sini adalah artikel ini.

Untuk rekaman saya menggunakan perekam suara – aplikasi yang sangat sederhana untuk merekam suara. Anda dapat mengambilnya misalnya di sini:

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

Hal utama pada langkah ini adalah memberi nama file dengan benar. Nama harus terdiri dari nomor slide dan nomor fragmen. Fragmen diberi nomor ganjil - 1, 3, 5, dst. Jadi, untuk slide, yang teksnya ditunjukkan pada gambar, dua file akan dibuat: 002-1.mp3 ΠΈ 002-3.mp3.

Jika Anda merekam semua video sekaligus di ruangan yang sunyi, Anda tidak perlu melakukan apa pun lagi dengan video tersebut. Jika Anda merekam dalam beberapa langkah, lebih baik menyamakan level volume:

mp3gain -r *.mp3

Utilitas mp3gain Untuk beberapa alasan, ini tidak ada dalam repositori standar, tetapi Anda bisa mendapatkannya di sini:

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

Setelah semua ini, Anda perlu merekam file lain dengan diam. Penting untuk menambahkan trek suara ke video senyap: jika satu video memiliki trek suara dan yang lainnya tidak, maka akan sulit untuk merekatkan video-video tersebut. Keheningan dapat direkam dari mikrofon, tetapi lebih baik membuat file di editor keberanian. Panjang file setidaknya harus satu detik (bisa lebih panjang), dan harus diberi nama diam.mp3

Mempersiapkan video interupsi

Semuanya di sini hanya dibatasi oleh imajinasi Anda. Anda dapat menggunakan editor untuk mengedit video Avidemux. Dahulu kala itu ada di repositori standar, tetapi kemudian karena alasan tertentu dihapus. Ini tidak akan menghentikan kita:

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

Ada banyak instruksi untuk bekerja dengan editor ini di Internet, dan pada prinsipnya, semuanya intuitif. Penting untuk memenuhi beberapa syarat.

Pertama, resolusi video harus sesuai dengan resolusi video target. Untuk melakukan ini, Anda perlu menggunakan dua filter dalam "video keluaran": swsResize untuk mengubah resolusi dan "menambahkan bidang" untuk mengubah film "format sempit" Soviet menjadi format lebar. Semua filter lainnya bersifat opsional. Misalnya, jika seseorang tidak mengerti mengapa pernyataan Tuan Sharikov ada dalam bagian yang sedang dibahas, dengan menggunakan filter β€œtambahkan logo”, Anda dapat melapisi logo PostgreSQL di atas β€œHati Anjing”.

Kedua, semua fragmen harus menggunakan frame rate yang sama. Saya menggunakan 25 frame per detik karena kamera dan film Soviet lama saya memberikan sebanyak itu. Jika film yang Anda potong diambil dengan kecepatan berbeda, gunakan filter Resample Video.

Ketiga, semua fragmen harus dikompresi dengan codec yang sama dan dikemas dalam wadah yang sama. Oleh karena itu di Avidemux untuk formatnya pilih video – β€œMPEG4 AVC (x264)", audio-"AAC (FAAC)", format output - "Muxer MP4'.

Keempat, penting untuk memberi nama video yang dipotong dengan benar. Nama file harus terdiri dari nomor slide dan nomor fragmen. Fragmen diberi nomor genap, dimulai dari 2. Jadi, untuk frame yang sedang dibahas, video dengan interupsi harus diberi nama 002-2.mp4

Setelah video siap, Anda perlu mentransfernya ke direktori dengan fragmen. Pengaturan avidemux berbeda dari pengaturan ffmpeg secara default dengan parameter misterius tbr, tbn, tbc. Mereka tidak mempengaruhi pemutaran, tetapi tidak memungkinkan video direkatkan. Jadi mari kita kode ulang:

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

Memotret screensaver

Di sini juga, semuanya sederhana: Anda memotret dengan latar belakang skema yang cerdik, memasukkan video yang dihasilkan ke dalam katalog rec, dan dari sana transfer ke direktori dengan fragmen. Aturan penamaannya sama dengan kutipan interupsi, perintah pengodean ulangnya adalah sebagai 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 berencana memulai video dengan pidato Anda, beri nama fragmen ini 000-1.mp4

Membuat bingkai dari gambar statis

Saatnya mengedit video dari gambar dan suara statis. 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

Harap dicatat bahwa durasi file audio pertama-tama ditentukan oleh utilitas soksi, lalu video dengan durasi yang diperlukan diedit. Semua rekomendasi yang saya temukan lebih sederhana: daripada sebuah bendera -t ${durasi} bendera digunakan -terpendek... Sebenarnya ffmpeg menentukan panjang mp3 secara kasar, dan selama pengeditan, panjang trek audio bisa sangat berbeda (satu atau dua detik) dari panjang trek video. Ini tidak masalah jika seluruh video terdiri dari satu bingkai, tetapi saat Anda merekatkan video tersebut dengan interupsi di bagian tepinya, efek kegagapan yang sangat tidak menyenangkan akan terjadi.

Cara lain untuk menentukan durasi file mp3 adalah dengan menggunakan mp3info. Dia juga membuat kesalahan, dan terkadang ffmpeg memberi lebih dari mp3info, terkadang sebaliknya, terkadang keduanya berbohong – saya tidak melihat pola apa pun. Dan di sini soksi berfungsi dengan benar.

Untuk menginstal utilitas yang berguna ini, lakukan ini:

sudo apt-get install sox libsox-fmt-mp3

Melakukan transisi antar slide

Transisi adalah video pendek yang mengubah satu slide menjadi slide lainnya. Untuk membuat video seperti itu, kami mengambil slide secara berpasangan dan menggunakan imagemagick mengubah satu menjadi 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}

Untuk beberapa alasan saya ingin slide tersebut tersebar dengan titik-titik, dan kemudian slide berikutnya akan dirangkai dari titik-titik tersebut, dan untuk ini saya menulis sebuah skrip bernama memudar.pl Memiliki imagemagick, pengguna Linux asli akan membuat efek khusus apa pun, tetapi jika seseorang menyukai ide saya dengan hamburan, berikut 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 sudah jadi

Sekarang kita memiliki semua fragmennya. Buka katalog klip dan merakit film yang sudah jadi menggunakan dua perintah:

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 untuk siswa Anda yang berterima kasih!

Sumber: www.habr.com

Tambah komentar