视频讲座:Unix方式


隔离是学习知识的绝佳时机。但是,正如您所知,要有人学习一些东西,就必须教人。如果您有一个演讲想与百万分之一的观众交流,并赢得世界声誉,那么本文适合您。在这里,您将找到有关如何从演示文稿制作视频的分步说明。

我们标记了在PowerPoint中录制“声音评论”并在视频中导出演示文稿的方式,这很琐碎,而没有给出真正酷视频所需的可能性的十分之一。

首先,我们将决定需要哪些框架:

  1. 实际上是带有画外音的幻灯片
  2. 换片
  3. 热门电影中的引语
  4. 具有讲师和最喜欢的猫的相貌的一些镜架(可选)


创建目录结构


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

按目录顺序分配目录:要从中提取报价的电影(剪辑),未来视频的片段(剪辑),摄像机的视频(录制),图像幻灯片(幻灯片),声音(声音)。

在图片中进行演示


对于真正的红眼 Linuxoid,以图片的形式进行演示不会出现任何问题。让我提醒您,可以通过以下方式将pdf文档解析为图像:

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

如果没有这样的命令,请安装poppler-utils软件包(Ubuntu的说明;如果您有Arch,那么您已经知道没有我该怎么办)。

在下文中,我认为视频正在以HD Ready格式(即1280×720)进行准备。在卸载时,水平尺寸为10英寸的演示文稿给出的尺寸恰好与此相同(请参见-r 128选项)。

我们正在准备案文


如果您想制作非常酷的材料,那么必须先编写演讲稿。我还认为我可以不加准备就讲文本,特别是因为我有很好的演讲经验。但是现场表演是一回事,录制视频是另一回事。不要偷懒-花费在打字上的时间将获得不止一次的回报。



这是我的录音格式。标题中的数字等于幻灯片的数量,中断以红色突出显示。任何编辑器都适合进行准备,但是最好使用成熟的文字处理器-例如OnlyOffice

听起来不错的幻灯片


我能说什么-打开麦克风并写:)

经验表明,即使使用最便宜的外接麦克风,其录制质量也比笔记本电脑的内置麦克风好。如果您想要高质量的设备,那么我推荐这篇文章

对于录音,我使用了录音机 -一个非常简单的录音应用程序。您可以在这里使用它,例如:

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

此步骤中的主要内容是正确的文件命名。名称必须由幻灯片编号和片段编号组成。片段用奇数编号-1、3、5等。因此,对于幻灯片,其文本显示在图片中,将创建两个文件:002-1.mp3002-3.mp3

如果您在一个安静的房间中一次录制所有视频,那么它们将无能为力。如果您分几个阶段进行录制,最好均衡音量:

mp3gain -r *.mp3

由于某些原因,mp3gain实用程序不在标准存储库中,但是您可以在此处获得:

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

完成所有这些之后,您需要静默写入另一个文件。有必要在无声剪辑中添加配乐:如果一个剪辑中有一个配乐,而另一个剪辑中没有,则很难粘贴这些剪辑。可以从麦克风记录静音,但是最好在Audacity编辑器中创建一个文件该文件必须至少一秒(更长),并且应该调用silence.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) ”,音频-“ AAC(Faac) ”,输出格式-“ MP4 Muxer ”。

第四,正确命名剪切片段很重要。文件名应由幻灯片编号和片段编号组成。片段以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目录,然后从那里将它们转移到带有片段的目录中。命名规则与引号分隔符相同,recoding命令如下:

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

请注意,声音文件的持续时间首先由soxi实用程序确定,然后安装所需长度的视频。我发现的所有建议都比较简单:-shortest标志代替了-t $ {duration}标志。实际上,ffmpeg非常确定mp3的长度,并且在安装过程中,音频轨道的长度可能与视频轨道的长度非常不同(一到两秒)。整个视频是否只包含一个帧都没有关系,但是将这样的电影粘贴在边界处时,会产生非常令人不快的口吃效果。 确定mp3文件持续时间的另一种方法是使用mp3info。她也弄错了,有时

ffmpegmp3info提供的更多,有时反之亦然,有时它们都说谎-我还没有注意到任何模式。但是soxi工作正常。

要安装此有用的实用程序,请执行以下操作:

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,一个真正的Linuxoid会产生任何特殊效果,但是如果有人喜欢我的散布想法,这是脚本:

#!/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 ("P3\n%d %d\n255\n",$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 0\n" : "255 255 255\n" for (1..$pixsize);
        }
      }
      print PICTURE ($l) for (1..$pixsize);
    }
  }
  close(PICTURE);
}

安装成品辊


现在我们有了所有片段。我们转到clips目录,并使用两个命令收集完成的电影:

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

欣赏您感激的学生吧!

All Articles