如何使用ffmpeg进行截屏

对于那些不知道的人, 截屏 它是计算机屏幕输出的数字记录,有时包含音频旁白。

En Linux, 有几个 工具截屏。 但是,那些喜欢这样做的人 消耗最少的资源 他们不能停止阅读本文。


使用2个工具(使用ffmpeg捕获屏幕,使用xwininfo获取要记录的窗口的坐标和尺寸),我设法使用最少的资源进行了截屏并获得了最佳效果。

开始截屏的脚本

#!/斌/庆典

#获取所选窗口的坐标和大小
#不包括窗户装饰。
  未设定xywh
  评估$(xwininfo -frame |
    sed -n -e“ s / ^ +左上角绝对X:+([0-9] +)。* / x = 1 / p”
           -e“ s / ^ +绝对左上角Y:+([0-9] +)。* / y = 1 / p”
           -e“ s / ^ +宽度:+([0-9] +)。* / w = 1 / p”
           -e“ s / ^ +高度:+([0-9] +)。* / h = 1 / p”)
$ w = $ w + $ w%2#宽度是2的倍数,否则ffmpeg抱怨
WIN_XY = $ x“,” $ y#格式化XY坐标
WIN_GEO = $ w“ x” $ h#格式窗口大小
#notify-send将显示一条消息,指示截屏开始。
#使用适合您的配置的参数运行ffmpeg。
通知发送“正在开始截屏...” && ffmpeg -f alsa -i硬件:0 -f x11grab -r 25 -s $ WIN_GEO -i:0.0 + $ WIN_XY -acodec libmp3lame -async 1 -vcodec libx264-预设超快速- crf 0-线程0 save.mp4

您不需要完全了解此脚本所做的一切。 只需遵循评论即可。 但是,很有可能您必须在执行ffmpeg的行中更改一些参数,以将其调整为计算机的配置。

音频架构

1)如果使用OSS,则将-f alsa -i hw:0替换为-f oss -i / dev / dsp

2)如果仅使用ALSA,则必须使用脚本中附带的参数(-f alsa -i hw:0)。 要确定硬件之后的编号:您可以运行aplay -l并选择适当的声卡编号。

3)如果使用脉冲音频(Ubuntu及其衍生版本使用此),请使用参数-f alsa -ac 1 -i pulse。

医科

-r 25表示要记录的fps(每秒帧数或每秒帧数)。 25是一个不错的选择。

音频,视频和同步编解码器

-acodec libmp3lame是音频编解码器。 我选择将其录制在mp3中。 您可以使用任何其他。

-async 1允许音频和视频同步。

-vcodec libx264 -preset ultrafast -crf 0 -threads 0,告诉ffmpeg要使用的视频编解码器是x264,并且预设是超快的(有快速,慢速等),否则将无法正确记录所需的fps。 -crf 0参数指示压缩级别(压缩程度越低,压缩程度越低)。 最后,线程0表示要使用的线程数,传递0时ffmpeg自动计算它。 与音频设置一样,您可以选择其他选项。

所有这些设置都是给我最好的设置:相对较小的文件,良好的视频质量,同步音频和无延迟。 但是,我建议您深入ffmpeg文档以发现其他内容。

截屏脚本

#!/斌/庆典
通知发送“正在结束截屏...” && killall ffmpeg
为了使两个脚本都能正常工作,您必须安装了通知发送。 所有来自Ubuntu的发行版都应安装此工具。 在Arch及其衍生物中:sudo pacman -S libnotify。

实况转播

在寻找编写脚本的信息时,我发现某人的想法与我的想法非常相似。 Ffcast是使用相同工具(ffmpeg和xwininfo)的脚本。 我提到它是因为有些人可能会觉得使用此脚本更方便。

在Arch和衍生产品中,我打开了一个终端并运行:

yaourt -S ffcast

其余的,您可以从下载 信息.

结束...

创建并保存保存在HOME文件夹中的脚本后,必须授予其执行权限。 假设调用了start_screencast和finish_screencast,请在终端中运行以下命令:

chmod + x start_screencast
chmox + x Terminate_Screencast

最后,仅需将每个脚本分配给您合适的2个快捷方式(快捷方式)。 这样,当您按下选定的组合键时,脚本将运行。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   迈克尔·斯派

    自从我了解Linux之后,我就问自己与本注释中已详述的完全相同的事情。 这将是一个雄心勃勃的项目。

  2.   聚四氟乙烯

    我认为该教程很好,但是您如何对新手说些简单呢?好吧,对我来说最好的是KAzam,它易于使用并且在我看来并不消耗太多! 干杯

  3.   让我们使用Linux

    不是全部。 另外,老实说,我相信没有一个很好的界面来进行屏幕广播(具有我需要的一切),无法与我想要的格式一起使用,并且消耗很少的资源。

    就我而言,终端是最好的选择。 我不假装所有人都可以,但是分享一个正在学习的东西是好事,对吗?

    干杯! 保罗

  4.   豪尔赫·罗查

    如果我们想在GNU / linux下扩展OS是错误的,我们建议用户在终端上做这种事情,那么人们会想要简单易用的功能

    @ingjorgerocha

  5.   为什么要

    在服务器级别,我也只使用控制台,而不使用图形环境……这是最实用的,我在那里进行所有操作(例如,如您所说的那样自动执行备份……),但是,在具有服务器...您想在该服务器上进行截屏视频吗?heff.ffmpeg非常有效,但我认为控制台问题应根据具体的发行版发布给后台。
    由于我们在Linux世界中有各种各样的发行版,并且控制台已经足够完善,可以在所有情况下正常工作(它几乎是绝对可靠的..),因此我们应该开始为公众改进应用程序,开始完善代码和图形方面...这是当今所需要的。
    我们有很多过时的废弃的Linux项目,我们都知道...对于我来说,一个很好的例子就是为什么不再有一种可执行的文件格式,该文件格式允许您使用pendrive双击一个简单的程序,除了需要存储库(以及因此需要网络)以外的其他安装..没有APTonCD,这也已经过时了..我们需要一个标准的“ .tux”或类似于Windows“ .exe”的文件。在Windows中,Gimp可执行文件占72mb,而Linux(.deb)则占4,2mb ...这是为什么? 好吧,因为Gimp程序本身在Windows中附带有所有库,以确保该程序在安装时能正常工作...在Linux中,我们可能拥有相同的内容,可执行文件将占据更多空间,我们将失去大小,但我们获得了便携性(更多的记忆使我们今天可以随身携带……如果我们几乎所有人都携带4GB笔式驱动器,那么携带72MB硬盘和8MB硬盘有什么区别?)
    所有这些东西都必须完善……系统稳定,具有强大的支持和驱动程序兼容性……我们为什么不改善现有的东西呢…………如果有人鼓励,我们开始执行可执行项目。

  6.   飞be

    嗯……好吧,爱控制台的人不喜欢它,因为亲爱的朋友,他们之所以喜欢它,是因为有了它,许多事情都可以自动化,例如在服务器级别(尽管并非如此)。

  7.   为什么要

    老实说,控制台非常有用...但是有些程序带有使用ffmpeg的GUI,对于可能的新Linux用户来说更具吸引力和更具建设性...我建议在几乎所有发行版的存储库中使用RecordMyDescktop。有很多人喜欢控制台,但是必须尽可能多地完成它。Linux必须专注于台式机,而从根本上希望这样做的最终用户可能需要图形界面,如果可能的话,它美观且实用。难道是这样吗?我们不能让自己踩下去... Linux具有巨大的潜力,我们必须加以挤压!
    无论如何,这是一个很棒的程序!

  8.   为什么要

    事实是,是的,分享一个正在学习的东西真是太好了……这不是从贬值的意义上来的批评,而是对为什么更多的人不使用Linux的批评……不管怎么说,控制台应该减少到第二平面,以让位于图形设施(这并不意味着排除了通过控制台执行操作的可能性,而是任何想要使用它的人,而谁不想使用它,那是不,..)
    归根结底,最重要的是,操作系统的易操作性。Linux在内部是不可阻挡的,但是如果我们增加了易用性和直观的界面,我们将赢得用户,并且它所带来的好处社区的发展,不同的程序,视频游戏公司的支持,以及因此而来的特定硬件(例如图形卡...),创建目前仅在Windows / Mac上才存在的专用软件……我不知道,我认为这是15M计划中的一切……都非常好,但是现在该改变一下路线了……我要说一点!

    好吧,Linux中的标准可执行项目仍然存在,如果有人阅读了它并希望我们开始合作,这是我的电子邮件,我没有隐藏嘿嘿(whysoyjuan@gmail.com)

    问候,我希望在这里看到更多评论……是批评还是赞美,事实是我们必须谈谈。

  9.   让我们使用Linux

    好! 贡献良多。
    拥抱! 保罗

  10.   赫拉尔

    这个程序是关于什么的...要小心,我对此不是很了解!

    1.    让我们使用linux

      通常,它用于转换视频。 例如,在这种情况下,我们将演示如何使用它来录制您的桌面并制作视频教程。
      拥抱! 保罗

  11.   rib属

    谢谢。 在分辨率(例如1280X800)中,必须大写X才能使ffmpeg命令起作用。