視訊講:unix 方式

視訊講:unix 方式
隔離是學習某些東西的好時機。 然而,正如你所理解的,為了讓某人學習一些東西,必須有人教導。 如果您想向數百萬觀眾進行演示並獲得全球聲譽,那麼本文適合您。 在這裡您將找到有關如何從簡報製作影片的逐步說明。

我們認為在 PowerPoint 中錄製「音訊評論」並將簡報匯出為影片的方式微不足道,無法提供真正酷影片所需功能的十分之一。

首先,讓我們決定我們需要什麼框架:

  1. 帶有畫外音的實際幻燈片
  2. 換幻燈片
  3. 流行電影中的台詞
  4. 幾張帶有講師臉部和他最喜歡的貓的相框(可選)

建立目錄結構

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

按列出順序排列的目錄的用途:我們將從中引用的電影(剪貼畫)、未來視頻的片段(剪輯)、來自相機的視頻(錄製)、圖片形式的幻燈片(幻燈片)、聲音(聲音)。

用圖片進行示範

對於真正的紅眼 Linux 用戶來說,以圖片的形式進行演示不會出現任何問題。 我只是提醒您,可以使用以下命令將 pdf 格式的文件解析為圖像

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

如果沒有該命令,請自行安裝套件 poppler的-utils的 (Ubuntu 的說明;如果你有 Arch,那麼你完全知道沒有我該怎麼辦)。

在這裡以及進一步,我相信影片是以 HD Ready 格式準備的,即 1280x720。 水平尺寸為 10 吋的簡報在卸載時給出的正是這個尺寸(請參閱 -r 128 選項)。

準備文字

如果你想創作出真正精彩的材料,你的演講需要先寫好。 我也認為我可以在沒有準備的情況下說出課文,尤其是因為我有很好的演講經驗。 但現場表演是一回事,錄影又是另一回事。 不要偷懶-花在打字上的時間會得到很多倍的回報。

視訊講:unix 方式

這是我的錄音格式。 標題中的數字與投影片編號相同,中斷部分以紅色突出顯示。 任何編輯器都適合準備,但最好使用成熟的文字處理程式 - 例如, OnlyOffice.

幻燈片旁白

我能說什麼 - 打開麥克風並寫:)

經驗表明,即使是最便宜的外置麥克風的錄音品質也比筆記型電腦的內建麥克風好得多。 如果你想要高品質的裝備,我推薦它 這篇文章.

為了錄音,我使用了 錄音機 – 一個非常簡單的錄音應用程式。 例如,您可以在這裡獲取它:

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

公用事業 mp3gain 由於某種原因它不在標準存儲庫中,但您可以在這裡獲取它:

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 來更改分辨率,“添加字段”將蘇聯“窄格式”電影變成寬格式。 所有其他過濾器都是可選的。 例如,如果有人不明白為什麼 Sharikov 先生的聲明會出現在正在討論的片段中,使用「新增標誌」過濾器,可以將 PostgreSQL 標誌覆蓋在「狗心」之上。

其次,所有片段必須使用相同的幀速率。 我使用每秒 25 幀,因為我的相機和老蘇聯膠卷給了我這麼多。 如果您要剪切的影片是以不同的速度拍攝的,請使用「重新採樣影片」濾鏡。

第三,所有片段必須使用相同的編解碼器進行壓縮並打包在相同的容器中。 因此在 Avidemux的 對於格式,選擇影片 - “Mpeg4 AVC(x264)“, 聲音的 - ”美國審計委員會 (FAAC)“, 輸出格式 - ”MP4混音器“。

第四,正確命名剪輯的影片很重要。 檔案名稱必須由投影片編號和片段編號組成。 片段編號為偶數,從 2 開始。因此,對於正在討論的幀,應將出現中斷的影片稱為 002-2.mp4

影片準備好後,您需要將它們傳輸到帶有片段的目錄中。 設定 Avidemux的 與設定不同 ffmpeg的 預設帶有神秘參數 tbr、tbn、tbc。 它們不會影響播放,但不允許影片黏合在一起。 那麼讓我們重新編碼:

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 ${持續時間} 使用標誌 -最短。 實際上 ffmpeg的 非常近似地確定 mp3 的長度,在編輯過程中,音軌的長度可能與視訊軌道的長度相差很大(一兩秒)。 如果整個影片由單個畫面組成,這並不重要,但是當您將這樣的影片與邊界中斷黏合時,就會出現極其令人不快的卡頓效果。

另一種確定 mp3 檔案持續時間的方法是使用 mp3資訊。 她也會犯錯,有時 ffmpeg的 給出超過 mp3資訊,有時是相反的,有時他們都會撒謊——我沒有註意到任何模式。 和這裡 索西 工作正常。

要安裝這個有用的實用程序,請執行以下操作:

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}

出於某種原因,我希望幻燈片上散佈著點,然後下一張幻燈片將從點中組裝起來,為此我編寫了一個名為 淡入淡出.plImageMagick的,一個真正的 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

添加評論