Hanny Helal 发布的文章

Libav是一款跨平台的工具库,能够用来处理多媒体文件、流和协议。它最初是源自ffmpeg。Libav带有一些工具,比如:

  • Avplay: 一款视频音频播放器。
  • Avconv: 能够记录多个设备输入源的一个多媒体转换器和视频音频录制器。
  • Avprobe: 一个连接多媒体文件流并且返回关于这个文件流的统计信息的工具。
  • Libavfilter: 一个Libav工具的过滤器(filtering)API。

在这篇文章里面,我们就要展示如何通过'Avconv'程序在Debian/Ubuntu/Linux Mint发行版上录制Linux桌面视频音频。

第一步:下载 Avconv 工具

1. avconv是 “libav-tools” 的一部分, 可以通过官方的基于debian的仓库下载,比如Mint、Ubuntu。输入下面命令即可:

$ sudo apt-get update
$ sudo apt-get install libav-tools

Install Avconv Tool

下载Avconv工具

注意: 如果从默认仓库下载的话, ‘avconv’ 的版本可能比较老。 因此我们推荐你拉取最新的git官方版本。

$ sudo apt-get install yasm
$ git clone git://git.libav.org/libav.git
$ cd libav
$ ./configure
$ make
$ sudo make install

注意: 你应该运行 ‘./configure –help’ 来列出所有的可选配置选项并且安装相应的解码器和库,你还需要做很多工作来解决依赖问题。

也要注意,如果你是从源代码编译的,就需要使用sudo avconv而不是avconv来运行这个工具。

第二步:开始录制桌面视频

2.一切就绪,现在可以通过运行下面的命令录制你的视频了:

$ avconv -f x11grab -r 25 -s 1920x1080 -i :0.0 -vcodec libx264 -threads 4 $HOME/output.avi

简单解释一下这个命令:

  • avconv -f x11grab 默认从X服务捕捉画面。
  • -r 25 这是你需要的视频帧率,可以自行设置。
  • -s 1920×1080 是你的系统的桌面分辨率,要设置成你当前桌面的分辨率,这一点非常重要。
  • -i :0.0 我们要记录的位置(X 服务输出端口),设置成这样就可以了。
  • -vcodec libx264 我们用来录制视频的编码器。
  • -threads 4 线程数,可以根据情况更改。
  • $HOME/output 输出的目标文件路径。
  • .avi 使用的视频格式,可以换成 “flv”、“mp4″、 “wmv”、 “mov”、 “mkv”等。

3.在运行命令之后,就会在terminal上自动运行一个进程进行记录,按"Ctrl+C"键来终止记录。

Record Desktop Screen

录制桌面视频

4. 现在,你可以使用VLC或者其他的播放器,或者使用来自Libav包里的播放器"avplay"来播放你录制的视频。

$ avplay $HOME/output.avi

注意: 别忘了替换输出文件的路径为你自己的,录制效果还是很好的。

Play Recorded Video

播放录制的文件

这有一段我用 “avconv” 录制的视频 (墙外)。

第三步: 开始录制桌面的音频和视频

5. 如果也想同时录制音频,先运行这个命令,列出所有的音频输入源:

$ arecord -l

结果类似这样:

Check Audio Input

检查音频输入源

在我这里,我只有一个音频输入源,所以数量是1,这就是我使用如下命令来捕捉我的视频以及麦克风的音频的原因。

$ avconv -f alsa -i hw:1 -f x11grab -r 25 -s 1920x1080 -i :0.0 -vcodec libx264 -threads 4 output-file2.avi

我修改了部分地方,下面做个简短的解释:

  • -f alsa 一个从alsa设备捕捉声音的选项。
  • -i hw:1 是一个从 “hw:1” 设备捕捉音频的选项,这个设备是我电脑上仅有的一个音频输入设备。

注意: 如果你想用arecord -l显示的1之外的设备的话,别忘了替换 “1”。

结束录制,再来一次“Ctrl + C” 就可以。

第四步: 开始录制桌面音频

6. 如果只想录制音频的话,使用下面的命令。

$ avconv -f alsa -i hw:1 out.wav

7. 替换成 .mp3 等Libav支持的格式都可以,播放 out.wav就能听到你自己的声音了。

Record Desktop Audio

录制桌面音频

最后

avconv” 工具可以用来做很多其他事情,不仅仅是录制桌面视频,更多的教程和文档请移步到官网。

你对"avconv"的体验如何,你使用过其他工具录制桌面视频么?在评论里面和我们分享吧。


via: http://www.tecmint.com/record-ubuntu-desktop-screen-using-avconv/

作者:Hanny Helal 译者:ggaaooppeenngg 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Reprepro是一款小巧的命令行工具来方便地创建并管理.deb仓库。今天我们会展示给你如何使用reprepro简单地创建一个Debian包仓库,并使用rsync上传到Sourceforge.net。

步骤 1: 安装Reprepro并生成key

首先,安装所有需要的包,使用下面的apt-get命令。

$ sudo apt-get install reprepro gnupg

现在你需要使用gnupg生成一个gpg key,这里使用下面的命令。

$ gpg --gen-key

它会询问你一些问题,比如你想要哪种key、key的有效期、如果你不知道如何回答,只需点击回车 来选择默认选项(建议)

当然,它会询问你用户名和密码,在脑海中记住这些,因为我们会在之后需要它。

gpg (GnuPG) 1.4.14; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
        = key expires in n days
      w = key expires in n weeks
      m = key expires in n months
      y = key expires in n years
Key is valid for? (0) 
Key does not expire at all
Is this correct? (y/N) Y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <[email protected]>"

Real name: ravisaive
Email address: [email protected]
Comment: tecmint
You selected this USER-ID:
    "Ravi Saive (tecmint) <[email protected]>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.

+++++
gpg: key 2EB446DD marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
pub   2048R/2EB446DD 2014-06-24
      Key fingerprint = D222 B1C9 342E 5911 02B1  9147 3BD6 7918 2EB4 46DD
uid                  Ravi Saive (tecmint) <[email protected]>
sub   2048R/7EF2F750 2014-06-24

现在你的key已经生成了,要检查一下,用root权限运行这条命令。

$ sudo gpg --list-keys

示例输出

/home/ravisaive/.gnupg/pubring.gpg
----------------------------------
pub   2048R/2EB446DD 2014-06-24
uid                  ravisaive (tecmint) <[email protected]>
sub   2048R/7EF2F750 2014-06-24

步骤 2: 创建一个包仓库并导出key

我们现在要开始创建仓库,首先你需要创建一些文件夹,我们的仓库会放在/var/www/apt目录,让我们先创建这些目录。

$ sudo su
# cd /var/www
# mkdir apt
# mkdir -p ./apt/incoming 
# mkdir -p ./apt/conf
# mkdir -p ./apt/key

你现在需要将key导出到仓库文件夹,运行:

# gpg --armor --export username [email protected] >> /var/www/apt/key/deb.gpg.key

注意:用你之前步骤中输入的用户名代替username,用你的email代替上面的[email protected]

我们需要在/var/www/apt/conf创建一个文件“distributions”。

# touch /var/www/apt/conf/distributions

加入下面这几行到distributions这个文件中并保存。

Origin: (你的名字)
Label: (库的名字)
Suite: (stable 或 unstable)
Codename: (发布的代码名,比如  trusty)
Version: (发布的版本,比如 14.04)
Architectures: (软件包所支持的架构, 比如 i386 或 amd64)
Components: (包含的部件,比如 main restricted universe multiverse)
Description: (描述)
SignWith: yes

接下来我们会创建仓库树,运行这些命令:

# reprepro --ask-passphrase -Vb /var/www/apt export

示例输出

Created directory "/var/www/apt/db"
Exporting Trusty...
Created directory "/var/www/apt/dists"
Created directory "/var/www/apt/dists/Trusty"
Created directory "/var/www/apt/dists/Trusty/universe"
Created directory "/var/www/apt/dists/Trusty/universe/binary-i386"
FF5097B479C8220C ravisaive (tecmint) <[email protected]> needs a passphrase
Please enter passphrase:
Successfully created '/var/www/apt/dists/Trusty/Release.gpg.new'
FF5097B479C8220C ravisaive (tecmint) <[email protected]> needs a passphrase
Please enter passphrase:
Successfully created '/var/www/apt/dists/Trusty/InRelease.new'

步骤 3: 在新创建的仓库中加入包

现在准备你的.deb包来加入到仓库中。进入 /var/www/apt目录,你每次要加包的时候都必须这么做。

# cd /var/www/apt
# reprepro --ask-passphrase -Vb . includedeb Trusty /home/ravisaive/packages.deb

注意:用你在distributions文件中输入的仓库代号来代替trusty ,并且用包的路径替换/home/username/package.deb,你会被要求输入密码。

示例输出

/home/ravisaive/packages.deb : component guessed as 'universe'
Created directory "./pool"
Created directory "./pool/universe"
Created directory "./pool/universe/o"
Created directory "./pool/universe/o/ojuba-personal-lock"
Exporting indices...
FF5097B479C8220C ravisaive (tecmint) <[email protected]> needs a passphrase
Please enter passphrase:
Successfully created './dists/Trusty/Release.gpg.new'
FF5097B479C8220C ravisaive (tecmint) <[email protected]> needs a passphrase
Please enter passphrase:
Successfully created './dists/Trusty/InRelease.new'

你的包已经加入了仓库,如果要移除它的话采用如下命令:

# reprepro --ask-passphrase -Vb /var/www/apt remove trusty package.deb

当然你需要用你的包名与仓库代号来修改命令。

步骤 4: 上传仓库到Sourceforge.net

要上传仓库到Sourceforge.net,你当然需要一个可用的账号与一个可用的项目,让我假设你想要上传仓库到http://sourceforge.net/projects/myfoo/testrepository,这里的myfoo是项目名(UNIX上的名称,不是URL,不是标题),testrepository是你想要上传文件到这上面的目录,这里我们会使用rsync 命令。(LCTT译注:当然你也可以上传到其它的支持Http/Rsync的服务器上,以提供远程软件库的服务。)

# rsync -avP -e ssh /var/www/apt/ [email protected]:/home/frs/project/myfoo/testrepository/

注意:用你在sourceforge.net上的用户名代替username,用你的项目的UNIX名称代替myfoo,用你想要存储的文件夹代替testrepository。

现在你的仓库(包括设置和key等等)上传到了http://sourceforge.net/projects/myfoo/testrepository

要把它加入到一个已装好的系统,首先你需要导入仓库key,它实际上就是/var/www/apt/key/deb.gpg.key,但是这是一个本地路径,使用你的仓库的其它用户不能添加到他们的系统中,这就是为什么我们要导入来自sourceforge.net的key的原因。

$ sudo su
# wget -O - http://sourceforge.net/projects/myfoo/testrepository/apt/key/deb.gpg.key | apt-key add -

你现在可以非常轻松地把仓库加入到系统中了,打开/etc/apt/sources.list,并加入下面这行:

deb http://sourceforge.net/projects/myfoo/testrepository/apt/key/deb.gpg.key trusty main

Note:用你的项目的UNIX类型名称代替myfoo,用你的仓库代码代替trusty,用你上传存储的文件夹代替testrepository,用你在distributionsj加入的仓库组件代替main。

接下来,运行下面的命令来更新仓库列表。

$ sudo apt-get update

祝贺你! 你的软件仓库已经激活了!你现在可以非常简单地在你需要的时候安装包了。


via: http://www.tecmint.com/create-deb-pacakge-repository-in-ubuntu/

译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出