Karantina bir şeyler öğrenmek için harika bir zamandır. Ancak anladığınız gibi birinin bir şeyi öğrenmesi için birinin öğretmesi gerekir. Milyonlarca izleyiciye vermek ve dünya çapında ün kazanmak istediğiniz bir sunumunuz varsa bu yazı tam size göre. Burada sunumunuzdan nasıl video oluşturulacağına ilişkin adım adım talimatlar bulacaksınız.
PowerPoint'te "sesli yorumları" kaydetme ve sunumu videoya aktarma yolunu önemsiz bularak ve gerçekten harika bir video için gereken yeteneklerin onda birini sağlamayarak reddediyoruz.
Öncelikle hangi çerçevelere ihtiyacımız olduğuna karar verelim:
- Seslendirmeli gerçek slaytlar
- slayt değişikliği
- Popüler filmlerden alıntılar
- Öğretim görevlisinin yüzünün ve en sevdiği kedinin yer aldığı birkaç kare (isteğe bağlı)
Bir dizin yapısı oluşturma
.
├── clipart
├── clips
├── rec
├── slide
└── sound
Listeleme sırasına göre dizinlerin amacı: alıntı yapacağımız filmler (küçük resim), gelecekteki videomuzun parçaları (klipler), kameradan videolar (rec), resim biçiminde slaytlar (slayt), ses (ses).
Resimlerle sunum yapma
Gerçek bir kırmızı gözlü Linux kullanıcısı için resim şeklinde sunum yapmak herhangi bir sorun yaratmaz. Size pdf formatındaki bir belgenin şu komut kullanılarak görsellere ayrıştırılabileceğini hatırlatmama izin verin.
pdftocairo -png -r 128 ../lecture.pdf
Eğer böyle bir komut yoksa paketi kendiniz kurun poppler-utils (Ubuntu için talimatlar; eğer Arch'ınız varsa, o zaman bensiz ne yapacağınızı gayet iyi biliyorsunuz).
Burada ve devamında videonun HD Ready formatında yani 1280x720 olarak hazırlandığını düşünüyorum. Yatay boyutu 10 inç olan bir sunum, boşaltıldığında tam olarak bu boyutu verir (-r 128 seçeneğine bakın).
Metnin hazırlanması
Gerçekten harika bir materyal hazırlamak istiyorsanız öncelikle konuşmanızın yazılması gerekir. Ayrıca, özellikle ders verme konusunda iyi bir tecrübeye sahip olduğum için metni hazırlık yapmadan konuşabileceğimi düşündüm. Ancak canlı performans sergilemek başka, video kaydetmek başka şey. Tembel olmayın; yazmaya harcadığınız zamanın karşılığını birçok kez alacaksınız.
İşte kayıt formatım. Başlıktaki numara slayt numarasına eşittir, kesintiler kırmızıyla vurgulanmıştır. Herhangi bir editör hazırlık için uygundur, ancak tam teşekküllü bir kelime işlemci almak daha iyidir - örneğin, OnlyOffice.
Slaytlar üzerinde seslendirme
Ne diyebilirim - mikrofonu aç ve yaz :)
Deneyimler, en ucuz harici mikrofondan bile kayıt kalitesinin, bir dizüstü bilgisayarın yerleşik mikrofonuyla kıyaslanamaz derecede daha iyi olduğunu göstermektedir. Kaliteli ekipman istiyorsanız tavsiye ederim
Kayıt için kullandım ses kaydedici – ses kaydı için çok basit bir uygulama. Örneğin buradan alabilirsiniz:
sudo add-apt-repository ppa:audio-recorder/ppa
sudo apt-get update
sudo apt-get install audio-recorder
Bu adımdaki en önemli şey dosyaları doğru şekilde adlandırmaktır. Ad, slayt numarası ve parça numarasından oluşmalıdır. Parçalar tek sayılarla numaralandırılmıştır - 1, 3, 5 vb. Böylece, metni resimde gösterilen slayt için iki dosya oluşturulacaktır: 002-1.mp3 и 002-3.mp3.
Tüm videoları sessiz bir odada aynı anda kaydettiyseniz, onlarla başka bir şey yapmanıza gerek yoktur. Birkaç adımda kayıt yaptıysanız ses seviyesini eşitlemek daha iyidir:
mp3gain -r *.mp3
Araçlar mp3gain Bazı nedenlerden dolayı standart depolarda yok, ancak buradan alabilirsiniz:
sudo add-apt-repository ppa:flexiondotorg/audio
sudo apt-get update
sudo apt-get install mp3gain
Bütün bunlardan sonra sessiz bir şekilde başka bir dosya kaydetmeniz gerekiyor. Sessiz videolara ses bandı eklemek gerekir: Bir videoda ses bandı varsa ve diğerinde yoksa, bu videoları birbirine yapıştırmak zordur. Sessizlik bir mikrofondan kaydedilebilir, ancak düzenleyicide bir dosya oluşturmak daha iyidir cüret. Dosya uzunluğu en az bir saniye olmalı (daha fazlası mümkündür) ve adlandırılmalıdır. sessizlik.mp3
Kesinti videoları hazırlanıyor
Burada her şey yalnızca sizin hayal gücünüzle sınırlıdır. Videoları düzenlemek için bir düzenleyici kullanabilirsiniz Avidemux. Bir zamanlar standart depolardaydı ama sonra bir nedenden dolayı kesildi. Bu bizi durduramaz:
sudo add-apt-repository ppa:ubuntuhandbook1/avidemux
sudo apt-get update
sudo apt-get install avidemux2.7-qt5
İnternette bu editörle çalışmak için pek çok talimat var ve prensip olarak oradaki her şey sezgisel. Birkaç koşulun karşılanması önemlidir.
Öncelikle video çözünürlüğünün hedef video çözünürlüğüyle eşleşmesi gerekir. Bunu yapmak için, "çıkış videosunda" iki filtre kullanmanız gerekir: çözünürlüğü değiştirmek için swsResize ve Sovyet "dar formatlı" bir filmi geniş formata dönüştürmek için "alanlar ekleme". Diğer tüm filtreler isteğe bağlıdır. Örneğin, birisi Bay Sharikov'un ifadesinin neden tartışılan parçada yer aldığını anlamıyorsa, "logo ekle" filtresini kullanarak PostgreSQL logosunu "Köpek Kalbi" üzerine yerleştirebilirsiniz.
İkinci olarak, tüm parçaların aynı kare hızını kullanması gerekir. Saniyede 25 kare kullanıyorum çünkü kameram ve eski Sovyet filmleri bana bu kadarını veriyor. Kestiğiniz film farklı bir hızda çekilmişse Videoyu Yeniden Örnekle filtresini kullanın.
Üçüncüsü, tüm parçalar aynı codec bileşeniyle sıkıştırılmalı ve aynı kaplarda paketlenmelidir. Bu nedenle, Avidemux format için videoyu seçin – “MPEG4 AVC (x264)", ses -"AAC (FAAC)", çıkış biçimi - "MP4 Çoklayıcı'.
Dördüncüsü, kesilen videoların doğru şekilde adlandırılması önemlidir. Dosya adı slayt numarası ve parça numarasından oluşmalıdır. Parçalar 2'den başlayarak çift sayılarla numaralandırılır. Bu nedenle, tartışılan çerçeve için kesintili video çağrılmalıdır. 002-2.mp4
Videolar hazır olduktan sonra parçaları içeren dizine aktarmanız gerekiyor. Ayarlar avidemux ayarlardan farklı ffmpeg varsayılan olarak gizemli parametreler tbr, tbn, tbc'dir. Oynatmayı etkilemezler ancak videoların birbirine yapıştırılmasına izin vermezler. O halde yeniden kodlayalım:
for f in ???-?.mp4;
do
ffmpeg -hide_banner -y -i "${f}" -c copy -r 25 -video_track_timescale 12800 ../clips/$f
done
Ekran koruyucuları çekme
Burada da her şey basit: Akıllı bir planın arka planında çekim yapıyorsunuz, ortaya çıkan videoları bir kataloğa koyuyorsunuz recve oradan onu parçaların bulunduğu dizine aktarın. Adlandırma kuralları kesme tırnaklarıyla aynıdır, yeniden kodlama komutu aşağıdaki gibidir:
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
Videoya konuşmanızla başlamayı planlıyorsanız bu parçaya bir ad verin 000-1.mp4
Statik resimlerden çerçeveler oluşturma
Statik görüntü ve seslerden videoları düzenlemenin zamanı geldi. Bu, aşağıdaki komut dosyasıyla yapılır:
#!/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
Ses dosyasının süresinin öncelikle yardımcı program tarafından belirlendiğini lütfen unutmayın. seksive ardından gerekli uzunluktaki video düzenlenir. Bulduğum tüm öneriler daha basit: bayrak yerine -t ${süre} bayrak kullanıldı -en kısa. Aslında ffmpeg mp3'ün uzunluğunu yaklaşık olarak belirler ve düzenleme sırasında ses parçasının uzunluğu, video parçasının uzunluğundan büyük ölçüde (bir veya iki saniye) farklı olabilir. Videonun tamamının tek bir kareden oluşması önemli değil, ancak böyle bir videoyu kenarda kesintilerle yapıştırdığınızda son derece rahatsız edici kekemelik etkileri ortaya çıkıyor.
Bir mp3 dosyasının süresini belirlemenin başka bir yolu da mp3 bilgisi. O da hatalar yapıyor ve bazen ffmpeg fazlasını verir mp3 bilgisi, bazen tam tersi oluyor, bazen ikisi de yalan söylüyor – herhangi bir düzen fark etmedim. Ve burada seksi doğru çalışıyor.
Bu kullanışlı yardımcı programı yüklemek için şunu yapın:
sudo apt-get install sox libsox-fmt-mp3
Slaytlar arasında geçiş yapma
Geçiş, bir slaydın diğerine dönüştüğü kısa bir videodur. Bu tür videolar yapmak için slaytları çiftler halinde çekiyoruz ve imagemagick birini diğerine dönüştürün:
#!/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}
Bazı nedenlerden dolayı slaytın noktalarla dağılmasını ve ardından bir sonraki slaytın noktalardan birleştirilmesini istedim ve bunun için adında bir senaryo yazdım. fade.pl sahip olan imagemagick, gerçek bir Linux kullanıcısı herhangi bir özel efekt yaratacaktır, ancak eğer birisi saçılma fikrimi beğenirse, işte komut dosyası:
#!/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);
}
Bitmiş videoyu monte ediyoruz
Artık tüm parçalara sahibiz. Kataloğa git klipleri ve iki komutu kullanarak bitmiş filmi birleştirin:
ls -1 ???-?.mp4 | gawk -e '{print "file " $0}' >list.txt
ffmpeg -y -hide_banner -f concat -i list.txt -c copy MOVIE.mp4
Minnettar öğrencilerinize izlemenin tadını çıkarın!
Kaynak: habr.com