视频讲座:unix 方式

视频讲座:unix 方式
隔离是学习一些东西的好时机。 然而,正如你所理解的,为了让某人学习一些东西,必须有人教导。 如果您想向数百万观众进行演示并获得全球声誉,那么本文适合您。 在这里您将找到有关如何从演示文稿制作视频的分步说明。

我们认为在 PowerPoint 中录制“音频评论”并将演示文稿导出为视频的方式微不足道,无法提供真正酷视频所需功能的十分之一。

首先,让我们决定我们需要什么框架:

  1. 带画外音的实际幻灯片
  2. 更换幻灯片
  3. 流行电影中的台词
  4. 几张带有讲师脸部和他最喜欢的猫的相框(可选)

创建目录结构

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

按列出顺序排列的目录的用途:我们将从中引用的电影(剪贴画)、未来视频的片段(剪辑)、来自相机的视频(录制)、图片形式的幻灯片(幻灯片)、声音(声音)。

用图片进行演示

对于真正的红眼 Linux 用户来说,以图片的形式进行演示不会出现任何问题。 我只是提醒您,可以使用以下命令将 pdf 格式的文档解析为图像

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

如果没有该命令,请自行安装包 波普勒工具 (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

拍摄屏保

在这里,一切都很简单:您在一些巧妙的方案的背景下进行拍摄,将生成的视频放入目录中 rec:,然后从那里将其传输到带有片段的目录。 命名规则与中断引用相同,重新编码命令如下:

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

欣赏您感恩的学生!

来源: habr.com

添加评论