Fideolêzingen: unix manier

Fideolêzingen: unix manier
Quarantine is in prachtige tiid om wat te learen. As jo ​​​​lykwols begripe, moat immen leare om wat te learen. As jo ​​​​in presintaasje hawwe dy't jo wolle jaan oan in publyk fan miljoenen en wrâldwide bekendheid winne, dan is dit artikel foar jo. Hjir sille jo stap-foar-stap ynstruksjes fine oer hoe't jo in fideo kinne meitsje fan jo presintaasje.

Wy negearje it paad fan it opnimmen fan "audio-kommentaren" yn PowerPoint en it eksportearjen fan de presintaasje nei fideo as triviaal en net in tsiende fan 'e mooglikheden leverje dy't nedich binne foar in wirklik koele fideo.

Litte wy earst beslute hokker frames wy nedich binne:

  1. De eigentlike dia's mei voiceover
  2. Dia's feroarje
  3. Sitaten út populêre films
  4. Ferskate frames mei it gesicht fan de dosint en syn favorite kat (opsjoneel)

It meitsjen fan in triemtafelstruktuer

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

It doel fan 'e mappen yn' e folchoarder fan list: films wêrfan wy quotes sille lûke (clipart), fragminten fan ús takomstige fideo (clips), fideo's fan 'e kamera (rec), dia's yn' e foarm fan foto's (slide), lûd (lûd).

It meitsjen fan in presintaasje yn bylden

Foar in echte reade-eyed Linux-brûker is it meitsjen fan in presintaasje yn 'e foarm fan foto's gjin problemen. Lit my jo gewoan herinnerje dat in dokumint yn pdf-formaat kin wurde parseard yn ôfbyldings mei it kommando

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

As d'r gjin sa'n kommando is, ynstallearje it pakket sels poppler-utils (ynstruksjes foar Ubuntu; as jo Arch hawwe, dan wite jo perfekt wat te dwaan sûnder my).

Hjir en fierder leau ik dat de fideo is taret yn HD Ready-formaat, dus 1280x720. In presintaasje mei in horizontale grutte fan 10 inch jout krekt dizze grutte doe't lossen (sjoch de -r 128 opsje).

It tarieden fan de tekst

As jo ​​​​echt geweldich materiaal meitsje wolle, moat jo taspraak earst skreaun wurde. Ik tocht ek dat ik de tekst sûnder tarieding prate koe, benammen om't ik goede ûnderfining haw yn it lesjaan. Mar it is ien ding om live út te fieren, en in oar ding om in fideo op te nimmen. Wês net lui - de tiid bestege oan it typen sil in protte kearen betelje.

Fideolêzingen: unix manier

Hjir is myn opnameformaat. It nûmer yn 'e titel is gelyk oan it dianûmer, de ûnderbrekkings binne read markearre. Elke bewurker is geskikt foar tarieding, mar it is better om in folweardige tekstferwurker te nimmen - bygelyks, AllinnichOffice.

Stim oer de dia's

Wat kin ik sizze - set de mikrofoan oan en skriuw :)

De ûnderfining docht bliken dat de opnamekwaliteit sels fan 'e goedkeapste eksterne mikrofoan ûnfergelykber better is as fan' e ynboude mikrofoan fan in laptop. As jo ​​wolle kwaliteit apparatuer, Ik rekommandearje it dit artikel.

Foar opname brûkte ik audio recorder - in heul ienfâldige applikaasje foar lûdopname. Jo kinne it hjir bygelyks nimme:

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

It wichtichste ding op dizze stap is om de bestannen korrekt te neamen. De namme moat bestean út it dianûmer en fragmintnûmer. Fragminten wurde nûmere mei ûneven nûmers - 1, 3, 5, ensfh. Dus, foar de slide, wêrfan de tekst op 'e foto werjûn wurdt, wurde twa bestannen makke: 002-1.mp3 и 002-3.mp3.

As jo ​​​​alle fideo's tagelyk opnommen hawwe yn in stille keamer, hoege jo der fierder neat mei te dwaan. As jo ​​​​yn ferskate stappen opnommen hawwe, is it better om it folumenivo lyk te meitsjen:

mp3gain -r *.mp3

Utilities mp3winst Om ien of oare reden is it net yn 'e standert repositories, mar jo kinne it hjir krije:

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

Nei dit alles moatte jo in oar bestân opnimme mei stilte. It is needsaaklik om in lûdspoar ta te foegjen oan stille fideo's: as ien fideo in lûdspoar hat en de oare net, dan is it lestich om dizze fideo's oaninoar te lijmen. Stilte kin wurde opnommen fan in mikrofoan, mar it is better om in bestân yn 'e bewurker te meitsjen Audacity. De triem lingte moat wêze op syn minst in twadde (mear is mooglik), en it moat wurde neamd stilte.mp3

Underbrekingsfideo's tariede

Hjir alles wurdt beheind allinnich troch jo ferbylding. Jo kinne in bewurker brûke om fideo's te bewurkjen Avidemux. Eartiids wie it yn 'e standert repositories, mar doe waard it om ien of oare reden útsnien. Dit sil ús net stopje:

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

D'r binne in protte ynstruksjes foar it wurkjen mei dizze bewurker op it ynternet, en yn prinsipe is alles yntuïtyf. It is wichtich om te foldwaan oan ferskate betingsten.

Earst moat de fideo-resolúsje oerienkomme mei de doelfideo-resolúsje. Om dit te dwaan, moatte jo twa filters brûke yn 'e "útfierfideo": swsResize om de resolúsje te feroarjen en "fjilden tafoegje" om in Sovjet "smel formaat" film yn in breed formaat te feroarjen. Alle oare filters binne opsjoneel. Bygelyks, as immen net begrypt wêrom't de útspraak fan de hear Sharikov yn it fragmint ûnder diskusje is, mei it filter "add logo" kinne jo it PostgreSQL-logo boppe op 'e "Dog Heart" oerlizze.

Twads moatte alle fragminten deselde framerate brûke. Ik brûk 25 frames per sekonde, om't myn kamera en âlde Sovjetfilms my safolle jouwe. As de film wêrfan jo snije is makke op in oare snelheid, brûk dan it Resample Video-filter.

Tredde, alle fragminten moatte wurde komprimearre mei deselde codec en ferpakt yn deselde konteners. Dêrom, yn Avidemux foar it formaat, selektearje fideo - "MPEG4 AVC (x264)", audio-"AAC (FAAC)", útfierformaat - "MP4 Muxer".

Fjirde is it wichtich om de besunige fideo's korrekt te neamen. De triemnamme moat bestean út it dianûmer en fragmintnûmer. Fragminten wurde nûmere mei even nûmers, begjinnend fan 2. Sa moat foar it frame ûnder diskusje de fideo mei de ûnderbrekking neamd wurde 002-2.mp4

Nei't de fideo's klear binne, moatte jo se oermeitsje nei de map mei fragminten. Ynstellings avidemux ferskille fan ynstellings ffmpeg standert mei mysterieuze parameters tbr, tbn, tbc. Se hawwe gjin ynfloed op it ôfspieljen, mar se tastean de fideo's net oaninoar te lijmen. Dus litte wy opnij koade:

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

Screensavers sjitte

Ek hjir is alles ienfâldich: jo sjitte tsjin de eftergrûn fan wat tûk skema, set de resultearjende fideo's yn in katalogus rec, en dêrwei oermeitsje nei de map mei fragminten. De nammeregels binne itselde as foar interrupt-quotes, it werkodearjen kommando is as folget:

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

As jo ​​fan plan binne de fideo te begjinnen mei jo taspraak, neam dan dit fragmint 000-1.mp4

Frames meitsje fan statyske ôfbyldings

It is tiid om fideo's te bewurkjen fan statyske ôfbyldings en lûd. Dit wurdt dien mei it folgjende skript:

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

Tink derom dat de doer fan it audiobestân earst wurdt bepaald troch it hulpprogramma soxi, en dan wurdt de fideo fan 'e fereaske lingte bewurke. Alle oanbefellings dy't ik fûn binne ienfâldiger: ynstee fan in flagge -t ${duration} flagge wurdt brûkt -koartste. Yn feite ffmpeg bepaalt de lingte fan mp3 hiel likernôch, en by it bewurkjen kin de lingte fan it audiospoar sterk ferskille (mei ien of twa sekonden) fan 'e lingte fan it fideospoar. Dit makket net út as de folsleine fideo bestiet út ien frame, mar as jo sa'n fideo mei ûnderbrekkings oan 'e grins lijme, komme ekstreem onaangename stottereffekten foar.

In oare manier om de doer fan in mp3-bestân te bepalen is te brûken mp3 info. Se makket flaters ek, en soms ffmpeg jout mear as mp3 info, soms is it oarsom, soms lizze se beide - ik fernaam gjin patroan. En hjir soxi wurket goed.

Om dit nuttige hulpprogramma te ynstallearjen, dwaan dit:

sudo apt-get install sox libsox-fmt-mp3

It meitsjen fan oergongen tusken dia's

In oergong is in koarte fideo wêryn't de iene slide yn in oare feroaret. Om sokke fideo's te meitsjen, nimme wy dia's yn pearen en brûke imagemagick feroarje it iene yn it oare:

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

Om ien of oare reden woe ik dat de slide ferspraat waard mei stippen, en dan soe de folgjende dia fan 'e stippen gearstald wurde, en dêrfoar skreau ik in skript mei de namme fade.pl Hawwe imagemagick, in echte Linux-brûker sil in spesjaal effekt meitsje, mar as immen myn idee mei fersprieding hâldt, hjir is it 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);
}

Wy mount de klear fideo

No hawwe wy alle fragminten. Gean nei de katalogus clips en sammelje de ôfmakke film mei twa kommando's:

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

Genietsje fan it sjen nei jo tankbere studinten!

Boarne: www.habr.com

Add a comment