වීඩියෝ දේශන: unix way

වීඩියෝ දේශන: unix way
නිරෝධායනය යනු යමක් ඉගෙන ගැනීමට අපූරු කාලයකි. කෙසේ වෙතත්, ඔබ තේරුම් ගත් පරිදි, යමෙකු යමක් ඉගෙන ගැනීමට නම්, යමෙකු ඉගැන්විය යුතුය. ඔබට මිලියන ගණනක ප්‍රේක්ෂක පිරිසකට ලබා දීමට සහ ලොව පුරා කීර්තියක් ලබා ගැනීමට අවශ්‍ය ඉදිරිපත් කිරීමක් තිබේ නම්, මෙම ලිපිය ඔබ සඳහා වේ. ඔබේ ඉදිරිපත් කිරීමකින් වීඩියෝවක් සාදා ගන්නේ කෙසේද යන්න පිළිබඳ පියවරෙන් පියවර උපදෙස් මෙහිදී ඔබට සොයාගත හැකිය.

අපි PowerPoint හි “ශ්‍රව්‍ය අදහස්” පටිගත කිරීමේ මාර්ගය සහ ඉදිරිපත් කිරීම වීඩියෝවට නිර්යාත කිරීම සුළු දෙයක් ලෙස බැහැර කරන අතර සැබවින්ම සිසිල් වීඩියෝවක් සඳහා අවශ්‍ය හැකියාවන්ගෙන් දශමයක් ලබා නොදේ.

පළමුව, අපට අවශ්ය රාමු මොනවාදැයි තීරණය කරමු:

  1. හඬපට සහිත සැබෑ ස්ලයිඩ්
  2. ස්ලයිඩ වෙනස් කිරීම
  3. ජනප්‍රිය චිත්‍රපට වලින් උපුටා ගැනීම්
  4. කථිකාචාර්යවරයාගේ මුහුණ සහ ඔහුගේ ප්‍රියතම බළලා සහිත රාමු කිහිපයක් (විකල්ප)

නාමාවලි ව්යුහයක් නිර්මාණය කිරීම

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

ලැයිස්තුගත කිරීමේ අනුපිළිවෙලෙහි ඇති නාමාවලිවල අරමුණ: අපි උපුටා ගන්නා චිත්‍රපට (ක්ලිපාට්), අපගේ අනාගත වීඩියෝවේ කොටස් (ක්ලිප්), කැමරාවෙන් වීඩියෝ (rec), පින්තූර ස්වරූපයෙන් විනිවිදක (විනිවිදකය), ශබ්දය (ශබ්ද).

පින්තූරවල ඉදිරිපත් කිරීමක් කිරීම

සැබෑ රතු ඇස් ඇති ලිනක්ස් පරිශීලකයෙකු සඳහා, පින්තූර ආකාරයෙන් ඉදිරිපත් කිරීමක් කිරීම කිසිදු ගැටළුවක් ඇති නොකරයි. pdf ආකෘතියේ ඇති ලේඛනයක් විධානය භාවිතයෙන් රූපවලට විග්‍රහ කළ හැකි බව මම ඔබට මතක් කරමි

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

එවැනි විධානයක් නොමැති නම්, පැකේජය ඔබම ස්ථාපනය කරන්න පොප්ලර්-උපයෝගිතා (Ubuntu සඳහා උපදෙස්; ඔබට Arch තිබේ නම්, මා නොමැතිව කුමක් කළ යුතු දැයි ඔබ හොඳින් දනී).

මෙහි සහ තවදුරටත්, වීඩියෝව HD Ready ආකෘතියෙන්, එනම් 1280x720 ලෙස සකස් කර ඇති බව මම විශ්වාස කරමි. අඟල් 10 ක තිරස් ප්‍රමාණයකින් යුත් ඉදිරිපත් කිරීමක් බාන විට හරියටම මෙම ප්‍රමාණය ලබා දෙයි (-r 128 විකල්පය බලන්න).

පෙළ සකස් කිරීම

ඔබට සැබවින්ම විශිෂ්ට ද්රව්ය සෑදීමට අවශ්ය නම්, ඔබේ කථාව මුලින්ම ලිවිය යුතුය. විශේෂයෙන්ම මට දේශන ගැන හොඳ පළපුරුද්දක් තියෙන නිසා පෙර සූදානමකින් තොරව පෙළ කතා කරන්න පුළුවන් කියලා මමත් හිතුවා. නමුත් සජීවීව ඉටු කිරීම එක් දෙයක් වන අතර වීඩියෝවක් පටිගත කිරීම තවත් දෙයක්. කම්මැලි නොවන්න - ටයිප් කිරීම සඳහා වැය කරන කාලය බොහෝ වාරයක් ගෙවනු ඇත.

වීඩියෝ දේශන: unix way

මෙන්න මගේ පටිගත කිරීමේ ආකෘතිය. මාතෘකාවේ අංකය විනිවිදක අංකයට සමාන වේ, බාධා කිරීම් රතු පැහැයෙන් උද්දීපනය කර ඇත. ඕනෑම සංස්කාරකයක් සකස් කිරීම සඳහා සුදුසු වේ, නමුත් සම්පූර්ණ වචන සකසනයක් ගැනීම වඩා හොඳය - උදාහරණයක් ලෙස, එකම කාර්යාලය.

විනිවිදක හරහා හඬ

මට කුමක් කිව හැකිද - මයික්‍රෆෝනය සක්‍රිය කර ලියන්න :)

පළපුරුද්දෙන් පෙන්නුම් කරන්නේ ලැප්ටොප් පරිගණකයක ඇති මයික්‍රෆෝනයට වඩා ලාභම බාහිර මයික්‍රෆෝනයෙන් පවා පටිගත කිරීමේ ගුණාත්මකභාවය අසමසම ලෙස වඩා හොඳ බවයි. ඔබට ගුණාත්මක උපකරණ අවශ්ය නම්, මම එය නිර්දේශ කරමි මෙම ලිපිය.

පටිගත කිරීම සඳහා මම භාවිතා කළෙමි ශ්‍රව්‍ය පටිගත කරන්නා - ශබ්ද පටිගත කිරීම සඳහා ඉතා සරල යෙදුමක්. ඔබට එය ගත හැකිය, උදාහරණයක් ලෙස, මෙන්න:

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

මෙම පියවරේදී ප්රධාන දෙය වන්නේ ගොනු නිවැරදිව නම් කිරීමයි. නම විනිවිදක අංකය සහ ඛණ්ඩ අංකයෙන් සමන්විත විය යුතුය. කොටස් ඔත්තේ අංක වලින් අංක කර ඇත - 1, 3, 5, ආදිය. එබැවින්, විනිවිදක සඳහා, පින්තූරයේ පෙන්වා ඇති පෙළ, ගොනු දෙකක් සාදනු ඇත: 002-1.mp3 и 002-3.mp3.

ඔබ නිස්කලංක කාමරයක සියලුම වීඩියෝ එකවර පටිගත කර ඇත්නම්, ඔබට ඔවුන් සමඟ තවදුරටත් කිසිවක් කිරීමට සිදු නොවේ. ඔබ පියවර කිහිපයකින් වාර්තා කර ඇත්නම්, පරිමාව මට්ටම සමාන කිරීම වඩා හොඳය:

mp3gain -r *.mp3

උපයෝගිතා mp3 නැවත කිසියම් හේතුවක් නිසා එය සම්මත ගබඩාවල නැත, නමුත් ඔබට එය මෙතැනින් ලබා ගත හැක:

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

මේ සියල්ලෙන් පසු, ඔබ නිශ්ශබ්දතාවයෙන් තවත් ගොනුවක් වාර්තා කළ යුතුය. නිශ්ශබ්ද වීඩියෝ සඳහා ශබ්ද පථයක් එකතු කිරීම අවශ්ය වේ: එක් වීඩියෝවක් ශබ්ද පථයක් ඇති අතර අනෙකක් නොමැති නම්, මෙම වීඩියෝ එකට ඇලවීම අපහසු වේ. නිශ්ශබ්දතාවය මයික්‍රොෆෝනයකින් පටිගත කළ හැකි නමුත් සංස්කාරකයේ ගොනුවක් සෑදීම වඩා හොඳය නිර්භීතකම පහළ. ගොනු දිග අවම වශයෙන් තත්පරයක් විය යුතුය (වැඩි විය හැක), එය නම් කළ යුතුය නිහඬතාව.mp3

බාධා කිරීම් වීඩියෝ සූදානම් කරමින්

මෙහිදී සෑම දෙයක්ම සීමා වන්නේ ඔබේ පරිකල්පනයෙන් පමණි. වීඩියෝ සංස්කරණය කිරීමට ඔබට සංස්කාරකයක් භාවිතා කළ හැකිය Avidemux. වරෙක එය සම්මත ගබඩාවල තිබූ නමුත් පසුව කිසියම් හේතුවක් නිසා එය කපා හැර ඇත. මෙය අපව නවත්වන්නේ නැත:

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

අන්තර්ජාලයේ මෙම සංස්කාරකය සමඟ වැඩ කිරීම සඳහා උපදෙස් රාශියක් ඇත, සහ ප්‍රතිපත්තිමය වශයෙන්, එහි ඇති සෑම දෙයක්ම බුද්ධිමත් ය. කොන්දේසි කිහිපයක් සපුරාලීම වැදගත්ය.

පළමුව, වීඩියෝ විභේදනය ඉලක්කගත වීඩියෝ විභේදනයට අනුරූප විය යුතුය. මෙය සිදු කිරීම සඳහා, ඔබ "ප්රතිදාන වීඩියෝව" තුළ පෙරහන් දෙකක් භාවිතා කළ යුතුය: විභේදනය වෙනස් කිරීම සඳහා swsResize සහ සෝවියට් "පටු ආකෘතිය" චිත්රපටයක් පුළුල් ආකෘතියක් බවට පත් කිරීම සඳහා "ක්ෂේත්ර එකතු කිරීම". අනෙකුත් සියලුම පෙරහන් විකල්ප වේ. උදාහරණයක් ලෙස, "ලාංඡනය එක් කරන්න" පෙරහන භාවිතා කරමින්, ෂරිකොව් මහතාගේ ප්‍රකාශය සාකච්ඡාවට ලක්ව ඇති කොටසෙහි ඇත්තේ මන්දැයි යමෙකුට නොතේරෙන්නේ නම්, ඔබට "සුනඛ හදවත" මත PostgreSQL ලාංඡනය ආවරණය කළ හැකිය.

දෙවනුව, සියලුම කොටස් එකම රාමු අනුපාතය භාවිතා කළ යුතුය. මම තත්පරයකට රාමු 25 ක් භාවිතා කරන්නේ මගේ කැමරාව සහ පැරණි සෝවියට් චිත්‍රපට මට ලබා දෙන බැවිනි. ඔබ කපා ගන්නා චිත්‍රපටය වෙනස් වේගයකින් රූගත කර ඇත්නම්, නැවත සාම්පල වීඩියෝ පෙරහන භාවිතා කරන්න.

තෙවනුව, සියලුම කොටස් එකම කෝඩෙක් එකකින් සම්පීඩනය කර එකම බහාලුම්වල ඇසුරුම් කළ යුතුය. එබැවින් තුළ Avidemux ආකෘතිය සඳහා, වීඩියෝව තෝරන්න - "MPEG4 AVC (x264)", ශ්‍රව්‍ය -"AAC (FAAC)", ප්රතිදාන ආකෘතිය -"MP4 මුක්සර්".

හතරවනුව, කැපූ වීඩියෝ නිවැරදිව නම් කිරීම වැදගත්ය. ගොනු නාමය විනිවිදක අංකය සහ ඛණ්ඩ අංකයෙන් සමන්විත විය යුතුය. කොටස් 2 සිට ඉරට්ටේ ඉලක්කම් වලින් අංකනය කර ඇත. මේ අනුව, සාකච්ඡාවට භාජනය වන රාමුව සඳහා, බාධාව සහිත වීඩියෝව ඇමතිය යුතුය. 002-2.mp4

වීඩියෝ සූදානම් වූ පසු, ඔබ ඒවා කොටස් සමඟ නාමාවලියට මාරු කළ යුතුය. සැකසුම් ආඩෙමේක්ස් සැකසුම් වලින් වෙනස් වේ ffmpeg පෙරනිමියෙන් අද්භූත පරාමිතීන් tbr, tbn, tbc. ඒවා නැවත ධාවනයට බලපාන්නේ නැත, නමුත් ඒවා වීඩියෝ එකට ඇලවීමට ඉඩ නොදේ. ඉතින් අපි recode කරමු:

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

ස්ක්‍රීන් සේවර් වෙඩි තැබීම

මෙන්න, සෑම දෙයක්ම සරලයි: ඔබ යම් දක්ෂ යෝජනා ක්රමයක පසුබිමට එරෙහිව වෙඩි තියන්න, ප්රතිඵලය වීඩියෝ නාමාවලියකට දමන්න රචනා, සහ එතැන් සිට එය කොටස් සමඟ බහලුම වෙත මාරු කරන්න. නම් කිරීමේ රීති බාධා කිරීම් උපුටා දැක්වීම් සඳහා සමාන වේ, නැවත කේතනය කිරීමේ විධානය පහත පරිදි වේ:

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

ඔබ ඔබේ කතාවෙන් වීඩියෝව ආරම්භ කිරීමට අදහස් කරන්නේ නම්, මෙම කොටස නම් කරන්න 000-1.mp4

ස්ථිතික පින්තූර වලින් රාමු සෑදීම

ස්ථිතික රූප සහ ශබ්දයෙන් වීඩියෝ සංස්කරණය කිරීමට කාලයයි. මෙය පහත පිටපත සමඟ සිදු කෙරේ:

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

ශ්‍රව්‍ය ගොනුවේ කාලසීමාව මුලින්ම තීරණය කරනු ලබන්නේ උපයෝගීතාවයෙන් බව කරුණාවෙන් සලකන්න සොක්සි, පසුව අවශ්ය දිග වීඩියෝව සංස්කරණය කරනු ලැබේ. මා සොයාගත් සියලුම නිර්දේශ සරල ය: ධජයක් වෙනුවට -t ${duration} ධජය භාවිතා වේ - කෙටිම... ඇත්තටම ffmpeg mp3 හි දිග ඉතා ආසන්න වශයෙන් තීරණය කරන අතර, සංස්කරණය කිරීමේදී, ශ්‍රව්‍ය පථයේ දිග වීඩියෝ පථයේ දිගට වඩා විශාල වශයෙන් (තත්පර එකකින් හෝ දෙකකින්) වෙනස් විය හැක. සම්පූර්ණ වීඩියෝව තනි රාමුවකින් සමන්විත නම් මෙය වැදගත් නොවේ, නමුත් ඔබ එවැනි වීඩියෝවක් මායිමේ බාධා කිරීම් සමඟ ඇලවූ විට, අතිශයින්ම අප්රසන්න පැකිලීමේ බලපෑම් සිදු වේ.

mp3 ගොනුවක කාලසීමාව තීරණය කිරීමට තවත් ක්රමයක් වන්නේ භාවිතා කිරීමයි mp3info. ඇය ද වැරදි කරයි, සමහර විට ffmpeg වඩා ලබා දෙයි mp3info, සමහර විට එය අනෙක් පැත්තයි, සමහර විට ඔවුන් දෙදෙනාම බොරු කියනවා - මම කිසිම රටාවක් දැක්කේ නැහැ. මෙහි සොක්සි නිවැරදිව ක්රියා කරයි.

මෙම ප්රයෝජනවත් උපයෝගීතාව ස්ථාපනය කිරීමට, මෙය කරන්න:

sudo apt-get install sox libsox-fmt-mp3

විනිවිදක අතර සංක්‍රාන්ති සිදු කිරීම

සංක්‍රාන්තියක් යනු එක් විනිවිදකයක් තවත් විනිවිදකයක් බවට පත්වන කෙටි වීඩියෝවකි. එවැනි වීඩියෝ සෑදීම සඳහා, අපි යුගල වශයෙන් විනිවිදක ගෙන භාවිතා කරමු imagemagick එකක් අනෙකට පරිවර්තනය කරන්න:

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

කිසියම් හේතුවක් නිසා මට ස්ලයිඩය තිත් සමඟ විසිරී යාමට අවශ්‍ය විය, පසුව ඊළඟ විනිවිදකය තිත් වලින් එකලස් කරනු ඇත, මේ සඳහා මම පිටපතක් ලිව්වෙමි. fade.pl තිබීම imagemagick, සැබෑ Linux පරිශීලකයෙකු ඕනෑම විශේෂ ප්‍රයෝගයක් සාදනු ඇත, නමුත් යමෙකු විසිරීම සමඟ මගේ අදහසට කැමති නම්, මෙන්න පිටපත:

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

අපි නිමි වීඩියෝව සවි කරමු

දැන් අප සතුව සියලුම කොටස් තිබේ. නාමාවලිය වෙත යන්න ක්ලිප් විධාන දෙකක් භාවිතා කර නිමි චිත්‍රපටය එකලස් කරන්න:

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

ඔබේ කෘතවේදී සිසුන් නැරඹීමෙන් සතුටක් ලබන්න!

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න