Kuliah Video: cara unix


Karantina adalah waktu yang tepat untuk mempelajari sesuatu. Namun, seperti yang Anda ketahui, agar seseorang dapat mempelajari sesuatu, seseorang harus mengajar. Jika Anda memiliki presentasi yang ingin Anda ajak bicara kepada audiensi yang ke-sejuta, mendapatkan ketenaran dunia, maka artikel ini adalah untuk Anda. Di sini Anda akan menemukan petunjuk langkah demi langkah tentang cara membuat video dari presentasi.

Kami menandai cara merekam "komentar audio" di PowerPoint dan mengekspor presentasi dalam video sepele dan tidak memberikan sepersepuluh dari kemungkinan yang diperlukan untuk video yang benar-benar keren.

Untuk memulainya, kita akan memutuskan bingkai mana yang kita butuhkan:

  1. Sebenarnya slide dengan sulih suara
  2. Perubahan slide
  3. Ganggu kutipan dari film populer
  4. Beberapa bingkai dengan fisiognomi dosen dan kucing favorit (opsional)


Buat struktur direktori


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

Penugasan katalog dalam urutan daftar: film dari mana kami akan menarik kutipan (clipart), fragmen video masa depan kami (klip), video dari kamera (rec), slide gambar (slide), suara (suara).

Membuat presentasi dalam gambar


Untuk Linuxoid mata merah yang nyata , membuat presentasi dalam bentuk gambar tidak menimbulkan masalah. Biarkan saya hanya mengingatkan Anda bahwa dokumen pdf dapat diurai menjadi gambar menggunakan perintah

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

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

Selanjutnya, saya percaya bahwa video sedang disiapkan dalam format HD Ready, mis., 1280 × 720. Presentasi dengan ukuran horizontal 10 inci memberikan ukuran ini tepat saat membongkar muatan (lihat opsi -r 128).

Kami sedang mempersiapkan teks


Jika Anda ingin membuat materi yang sangat keren, maka pidato Anda terlebih dahulu harus ditulis. Saya juga berpikir bahwa saya bisa mengatakan teks tanpa persiapan, terutama karena saya memiliki pengalaman kuliah yang baik. Tapi itu satu hal untuk tampil live, dan yang lain untuk merekam video. Jangan malas - waktu yang dihabiskan untuk mengetik akan terbayar lebih dari sekali.



Ini format rekaman saya. Angka dalam pos sama dengan jumlah slide, interupsi disorot dengan warna merah. Editor apa pun cocok untuk persiapan, tetapi lebih baik menggunakan pengolah kata lengkap - misalnya, OnlyOffice .

Slide yang terdengar


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

Pengalaman menunjukkan bahwa kualitas rekaman bahkan dari mikrofon eksternal termurah jauh lebih baik daripada dengan mikrofon bawaan laptop. Jika Anda menginginkan peralatan berkualitas tinggi, maka saya merekomendasikan artikel ini .

Untuk merekam, saya menggunakan perekam audio - aplikasi perekaman yang sangat sederhana. 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 dalam langkah ini adalah penamaan file yang tepat. Nama harus terdiri dari nomor slide dan nomor fragmen. Fragmen diberi nomor dengan angka ganjil - 1, 3, 5, dll. Jadi, untuk slide, teks yang ditampilkan dalam gambar, dua file akan dibuat: 002-1.mp3 dan 002-3.mp3 .

Jika Anda merekam semua video sekaligus di ruangan yang sunyi, maka tidak ada yang bisa dilakukan dengannya. Jika Anda merekam dalam beberapa tahap, lebih baik menyamakan level volume:

mp3gain -r *.mp3

Untuk beberapa alasan, utilitas mp3gain tidak berada 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 menulis file lain dengan diam. Penting untuk menambahkan trek suara ke klip bisu: jika satu klip memiliki trek suara dan yang lainnya tidak, maka sulit untuk merekatkan klip ini. Diam dapat direkam dari mikrofon, tetapi lebih baik membuat file di editor Audacity . File harus setidaknya satu detik panjang (lebih lama), dan silence.mp3 harus dipanggil

Rol penggulung pemasak


Semuanya di sini hanya dibatasi oleh imajinasi Anda. Anda dapat menggunakan editor Avidemux untuk mengedit video . Setelah di repositori standar, tetapi kemudian untuk beberapa alasan itu digergaji. Ini tidak akan menghentikan kita:

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

Instruksi untuk bekerja dengan editor ini di laut, ya, pada prinsipnya, semuanya intuitif di sana. Penting untuk mengamati beberapa kondisi.

Pertama, resolusi film harus sesuai dengan resolusi target film. Untuk melakukan ini, dalam "video untuk keluar" Anda perlu menggunakan dua filter: swsResize untuk mengubah resolusi dan "tambahkan bidang" untuk membuat film "sempit-format" Soviet format lebar. Semua filter lain adalah opsional. Misalnya, jika seseorang tidak memahami apa pernyataan Mr. Sharikov dalam fragmen yang sedang dibahas, menggunakan filter "tambahkan logo", Anda dapat menambahkan logo PostgreSQL di atas "Dog's Heart".

Kedua, semua fragmen harus menggunakan frame rate yang sama. Saya menggunakan 25 frame per detik, karena begitu banyak memberikan kamera saya dan film-film Soviet lama. Jika film dari mana Anda memotong bingkai diambil dengan kecepatan yang berbeda, gunakan filter "Resample Video".

Ketiga, semua fragmen harus dikompres dengan codec yang sama dan dikemas dalam wadah yang sama. Oleh karena itu, dalam Avidemux untuk format, pilih video - " Mpeg4 AVC (x264) ", audio - " AAC (Faac) ", format output - " MP4 Muxer ".

Keempat, penting untuk memberi nama klip potongan dengan benar. Nama file harus terdiri dari nomor slide dan nomor fragmen. Fragmen diberi nomor dengan angka genap, dimulai dengan 2. Jadi, untuk frame yang sedang dibahas, klip dengan memotong harus disebut 002-2.mp4

Setelah klip siap, Anda perlu mentransfernya ke direktori dengan fragmen. Pengaturan avidemux berbeda dari pengaturan ffmpeg default dengan parameter tbr, tbn, tbc yang misterius. Mereka tidak mempengaruhi reproduksi, tetapi mereka tidak membiarkan roller terpaku. Karena itu, kami mengode ulang:

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

Kami menghapus screensaver


Di sini juga, semuanya sederhana: mengambil gambar dengan latar belakang semacam skema cerdas, meletakkan klip di direktori rec , dan dari sana mentransfernya ke direktori dengan fragmen. Aturan penamaan sama dengan untuk kutipan-break, perintah pengodean ulang 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 untuk memulai video dengan pidato Anda, beri nama fragmen ini 000-1.mp4

Kami membuat bingkai dari gambar statis


Saatnya untuk memasang klip dari gambar dan suara statis. Ini dilakukan dengan skrip ini:

#!/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 perhatikan bahwa pertama-tama durasi file suara ditentukan oleh utilitas soxi , dan kemudian video dengan panjang yang diinginkan dipasang. Semua rekomendasi yang saya temukan lebih sederhana: daripada flag -t $ {durasi} , flag -shortest digunakan . Bahkan, ffmpeg menentukan panjang mp3 sangat dekat, dan selama instalasi, panjang trek audio bisa sangat (satu hingga dua detik) berbeda dari panjang trek video. Tidak masalah jika keseluruhan video terdiri dari satu frame, tetapi ketika menempelkan film seperti itu dengan jeda di perbatasan, efek yang sangat tidak menyenangkan dengan gagap terjadi.

Cara lain untuk menentukan durasi file mp3 adalah dengan menggunakan mp3info . Dia juga salah, dan kadang-kadangffmpeg memberikan lebih dari mp3info , kadang-kadang sebaliknya, kadang-kadang mereka berdua berbohong - saya tidak melihat polanya. Tapi soxi bekerja dengan benar.

Untuk menginstal utilitas yang bermanfaat ini, lakukan ini:

sudo apt-get install sox libsox-fmt-mp3

Melakukan transisi antar slide


Transition - sebuah video pendek di mana satu slide berubah menjadi slide lain. Untuk membuat video seperti itu, ambil slide secara berpasangan dan gunakan imagemagick untuk 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 tersebar di titik-titik, dan kemudian slide berikutnya dikumpulkan dari titik-titik, dan untuk ini saya menulis sebuah skrip yang disebut fade.pl. Memiliki imagemagick , Linuxoid nyata akan menciptakan efek khusus, tetapi jika seseorang menyukai ide saya untuk menyebarkan, ini 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 ("P3\n%d %d\n255\n",$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 0\n" : "255 255 255\n" for (1..$pixsize);
        }
      }
      print PICTURE ($l) for (1..$pixsize);
    }
  }
  close(PICTURE);
}

Pasang roller yang sudah jadi


Sekarang kami memiliki semua fragmen. Kami pergi ke direktori klip dan mengumpulkan film jadi dengan 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

Nikmati tontonan Anda untuk siswa yang berterima kasih!

All Articles