当前位置: 首页 > 编程日记 > 正文

ffmpeg录屏/摄像头/指定窗口;别名alias设置

关于ffmpeg的使用方法很多,我简单写一下今天我捣鼓的几个。因为我的项目中要用到录屏和录制摄像头,所以试了下。网上关于录制指定窗口的方法并不多,我也是找了好久,试了好久才试出来的。
好了,废话不多说,开始!
1.录制摄像头

//这是直接播放的
ffplay -f video4linux2 -i /dev/video0>/dev/null 2>&1

其实也很简单,两个参数-f(指定格式(音频或视频格式));-i(输入)。那么什么是video4linux2? Video4linux2(简称V4L2),是linux中关于视频设备的内核驱动。在Linux中,视频设备是设备文件,可以像访问普通文件一样对其进行读写,摄像头在/dev/video0下.关于我后边的>/dev/null 2>&1 具体解释是:

shell中可能经常能看到:>/dev/null 2>&1
命令的结果可以通过 %> 的形式来定义输出,其中 %> 代表文件描述符
我们将这个命令组合:“>/dev/null 2>&1” 拆为四部分来分析下:
1:> 代表重定向到哪里,例如:echo “123” > /home/123.txt
2:首先 0> 表示stdin标准输入; 1> 表示stdout标准输出; 2> 表示stderr错误输出;
3:/dev/null 代表空设备文件
4:& 可以理解为是”等同于”的意思,2>&1,即表示2的输出重定向等同于1
5:1 表示stdout标准输出,系统默认值是1,所以”>/dev/null”等同于 “1>/dev/null”
因此,>/dev/null 2>&1 也可以写成“1> /dev/null 2> &1”
那么本文标题的语句执行过程为:
1>/dev/null :首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
2>&1 :接着,将标准错误输出重定向 到 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

//保存本地视频,编码为h264
ffmpeg -f video4linux2 -i /dev/video0 -vcodec libx264 a.mp4
//发布rtp
ffmpeg -f video4linux2 -i /dev/video0 -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f rtp rtp://ip:port

考虑到命令比较长,每次书写不容易,那么想到可以设置别名。终端输入alias可以看到当前用户设置的一些别名:
这里写图片描述
那么具体如何设置?在用户主目录下有个隐藏文件.bashrc,vim .bashrc后在里边添加:

alias ffmpegvideo='ffmpeg -f video4linux2 -i /dev/video0 -vcodec libx264 a.mp4'
//如此如此

保存退出后执行:

source .bashrc

那么在该终端中就能用此别名ffmpegvideo了。如果要在其他终端中用,麻烦再 source ~.bashrc一下。

2.录制屏幕
同样,很简单。

ffmpeg -f x11grab -r 30 -s 1366x744 -i :0.0 -qscale 1 a.avi

至于具体解释,可以简单理解:x11grab是一个抓屏设备;-r表示帧速率;-s 表示分辨率,此处是全屏幕;-i :0.0表示录制的坐标,相对于左上角来说的偏移;-qscale 表示录制质量,后边的值小质量高。

那么如何录制指定窗口呢?比如一个终端?或是一个网页?要用到xwininfo,终端中执行之后随便点击你要录制的窗口,效果如下:
xwininfo
此处我是在这个终端中点击了,可以看到Width:722 Height:434 ,注意最下边的一行-geometry 80x24+2+86 ,其中2表示x的偏移,相对与左上角;86表示y的偏移,相对于左上角。

//***千万注意此处的写法,不是:0.0+2+86,我捣鼓了半天就是因为这里没写对,注意注意啊***
ffmpeg -f x11grab -r 30 -s 722x434 -i :0.0+2,86 -qscale 1 a.avi
//发布rtp,把ip和port修改就行
ffmpeg -f x11grab -r 30 -s 1366x744 -i :0.0 -qscale 1 -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f rtp rtp://ip:port

至于别名设置,我就设置成了ffmpegscnrtp扥等。

                        拙见,小记!

相关文章:

黄聪:BackGroundWorker解决“线程间操作无效: 从不是创建控件的线程访问它” (C# VS2008)...

在编程中经常会遇到在一个按钮中执行复杂操作,并将复杂操作最后返回的值加入一个ListView或ComboBox中候选。这个时候程序会卡,当程序员将这些卡代码放进线程(Thread)中后发现当对控件操作时出现“线程间操作无效: 从不是创建控件的线程访问它”异常。 …

AWS 中国宁夏和北京区正式上线 Amazon SageMaker,中国用户终于能用到新工具和功能!

2020年 5 月 12 日,亚马逊云服务 Amazon Web Services, Inc. (AWS) 宣布,Amazon SageMaker 在由西云数据运营的 AWS 中国 (宁夏) 区域和光环新网运营的 AWS 中国(北京)区域正式上线。 Amazon SageMaker 在中国的上线使中国用户获…

Ubuntu Vim YouCompleteMe 安装

0. 必要工具安装 sudo apt-get install build-essential cmake 1. 安装 vundle mkdir ~/.vim/bundle git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle 2.编辑 .vimrc set nocompatible " be iMproved, required filetype off …

ubuntu vsftpd虚拟用户配置/ubuntu12.04上搭建vsftpd服务示例linux

转自这里 在ubuntu中安装完vsftpd后,安装libdb4.6-util: 复制代码 代码示例: sudo apt-get install db4.6-util 在etc下面建立目录vsftpd, 创建一个txt文档,比如logins.txt,在其中输入用户名及密码,如: 复制代码 代码示例: test 12345…

云从完成超过18亿元新一轮融资,加快上市步伐

近日,云从科技完成新一轮融资,总规模超过18亿元人民币,投资方除了中国互联网投资基金、上海国盛、广州南沙金控、长三角产业创新基金等政府基金外,还包括工商银行、海尔金控等产业战略投资者,进一步强化“AI国家队”的…

input core input.c (1)

drivers/input/input.c 就是所谓的input的核心程序。 分析这个文件,先从input_init开始。 1: static int __init input_init(void) 2: { 3: err class_register(&input_class); 4: err input_proc_init(); 5: err register_chrdev(INPUT_MAJOR, "i…

Swift解读专题四——字符串与字符

2019独角兽企业重金招聘Python工程师标准>>> Swift解读专题四——字符串与字符 一、引言 Swift中提供了String类型与Characters类型来处理字符串和字符数据,Swift中的String类型除了提供了许多方便开发者使用的方法外,还可以与Foundation框架…

非模态对话框的销毁

前面写过一篇关于模态和非模态对话框的文章,关于模态对话框和非模态对话框的创建、显示,以及和父对话框的传值 。文章末尾我遗留了一个问题,即当销毁非模态对话框后,需要置创建该非模态对话框的指针为NULL,但是具体是怎么操作呢&a…

LAMP兄弟连PHP课程学习笔记 第二天 PHP中使用变量

2019独角兽企业重金招聘Python工程师标准>>> 一、变量的介绍 变量:是指临时储存值的容器,这个值可以是数字或者文本或者其他组合。可以在程序使用的过程中更改。 二、变量的声明 1、如果用到的数据需要多次被调用时就声明为变量,P…

清华孵化,打造智能驾驶感控平台,超星未来获千万A轮融资

2020年5月14日,智能驾驶初创企业北京超星未来科技有限公司今天宣布已完成数千万元A轮融资,由恒大高科技领投,中关村前沿基金、和米资本、宝钜投资及图灵创投进行跟投。本轮融资将帮助超星未来在人才端和研发端持续投入,通过软硬件…

71 mac boook pro 无 gpu 下caffe 安装

71 mac boook pro 无 gpu 下caffe 安装 1.首先安装homebrew工具,相当于Mac下的yum或apt ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 2.安装Caffe依赖 $ brew install -vd snappy leveldb gflags glog s…

比较有趣的一个笔试题目

这2天忙于找工作,看.NET笔试题目的时,发现有些笔试题目还是比较有趣的,虽然考的都是基础,但是稍有不慎还是会进入圈套。以下面一个题目为例,听说是晕倒了一群人 - - classProgram { staticvoidMain(string[]…

82年 AI程序员征婚启示火了!年薪百万,女生神回复

最近在某社区,一则程序员征婚启示火了!很多女生在评论区表示“全中”,想交流看看。然后评论区就炸了,有人恶意说yp,有人说看中了楼主的钱。笔者一翻,发现楼主果然无意中透露了百万年薪收入,虽然…

MFC给按钮添加皮肤

其实这也很简单,但是毕竟是因为我现在已经做出来了,当时还是查了一些资料的。废话不多说,直接上代码: 首先在类中声明: HBITMAP pausehBitmap; //用于暂停按钮的皮肤 然后将资源图片添加至资源视图中&#xff0…

Python全栈开发day2

1、python种类和区别 Cpython Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。 Jyhton Python的…

16分钟优化mRNA疫苗稳定性! 百度AI算法LinearDesign问世

新冠病毒全球累计确诊已超过400万人,疫苗是终结疫情的关键胜负手。在所有正在研发的疫苗路径中,研发速度更快、更具潜力的mRNA疫苗作为一种新兴技术受到了国内外的重点关注。但同时,mRNA疫苗由于稳定性不足容易在保存、运输中降解&#xff0c…

控制台打印汉字的方法

wstring gL"自动定理证明"; wstring sL"自动定理证明器"; EditDistance editdistance(g,s); //int distanceleneditdistance.CalEditDistance(); wcout.imbue(locale("chs")); set<string>words; editdistance.GetDictionary(words); O…

模态对话框的父窗口设置

我的毕业设计基本是搞完了&#xff0c;那么最近几天在做一些测试和修改。其中就有一个问题折腾了我好久&#xff0c;今天才发现&#xff0c;原来是这么回事。 我创建了一个非模态的子对话框&#xff0c;然后在这个子对话框中又创建了一个模态对话框&#xff0c;结果意外的是点…

XSD标准架构-----xsd:element 元素详解

声明一个元素。 <elementabstract Boolean : falseblock (#all | List of (extension | restriction | substitution))default stringfinal (#all | List of (extension | restriction))fixed stringform (qualified | unqualified)id IDmaxOccurs (nonNegativeInte…

VS2010使用Skin++

转载自http://blog.sina.com.cn/s/blog_5d23890b0100icjj.html。 Skin的使用 一.使用皮肤 将SkinPPWTL.lib 、skinppwtl.dll 、SkinPPWTL.h三个文件及相应皮肤&#xff08;**.ssk&#xff09;拷贝至工程文件夹下&#xff1b;一般还要将这些文件放在Debug文件夹下。 1.在(VC…

美翻朋友圈:用Python生成蒙太奇马赛克图片

题图 | 视觉中国来源 | ZackSock&#xff08;ID:ZackSock&#xff09;我们有时候会听到这么一个词--“蒙太奇”&#xff0c;但却不知道这个词是什么意思。蒙太奇原为建筑学术语&#xff0c;意为构成、装配。而后又延伸为一种剪辑理论&#xff1a;当不同镜头拼接在一起时&#x…

在SQL Server 2008中配置文件流(FILESTREAM)

SQL Server 2008推出了一个新的特性叫做文件流(FILESTREAM)&#xff0c;它使得基于SQL Server的应用程序可以在文件系统中存储非结构化的数据&#xff0c;例如文档、图片、音频、视频等等。文件流主要将SQL Server数据库引擎和新技术文件系统(NTFS)集成在一起;它主要以varbinar…

mysql limit offset

Java代码 SELECT keyword FROM keyword_rank WHERE advertiserid59 order by keyword LIMIT 2 OFFSET 1; 比如这个SQL &#xff0c;limit后面跟的是2条数据&#xff0c;offset后面是从第1条开始读取 Java代码 SELECT keyword FROM keyword_rank WHERE advertiserid59 order …

获取磁盘符信息

项目中有个子模块是ftp客户端&#xff0c;需要罗列本地各个磁盘符&#xff0c;比如C盘、D盘、E盘、F盘。然后进行一些相关的上传下载就比较方便&#xff0c;具体样子如下所示&#xff1a; 需要利用一个Combox控件实现。 废话不多说&#xff0c;先上代码&#xff1a; void …

成为计算机视觉工程师的第一个月,我都学会了什么?

作者 | Richmond Alake译者 | 弯月题图 | 自视觉中国出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;我写这篇文章的目的是为了向那些没有接触过机器学习行业的人们介绍一下我作为计算机视觉工程师第一个月以来的体验&#xff0c;希望这些内部信息能够让你…

天然良方对付小病

打嗝、口臭、消化不良……我们的身体时常会受到一些小毛病的困扰。20位来自美国各大医院的权威医生在美国《预防》杂志网站上发表文章&#xff0c;向读者介绍了一些纯天然的便捷方法&#xff0c;来快速应对这些小病。 生姜止吐。先用热水冲泡生姜片&#xff0c;过滤后把姜汤倒在…

Spring中使用Schedule调度

在spring中两种办法使用调度&#xff0c;以下使用是在spring4.0中。 一、基于application配置文件&#xff0c;配置入下&#xff1a; 1 <bean id"jobDetail" class"org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">…

DNS域名解析优化之tinydns/djbdns篇——测试篇

要开始还债了。 今天整理了一下一套bind9的配置&#xff0c;把记录都清理了一番。想了想&#xff0c;顺带安装了个geoipdns来做性能测试。整理记录的时候用bind-to-tinydns转换了一下记录格式。这些过程以后再说。 NS服务器是同一台Dell PowerEdge 2950。先启动的geoipdns&…

使用Combox控件的一个问题

Combox控件是MFC里边一个比较常用的控件&#xff0c;基本可以看成是一个文本框和一个下拉列表组合而成。但是我在用的时候碰到了一个问题&#xff0c;当我用AddString()函数加了4,5个字符串后&#xff0c;运行之后点击下拉箭头并没有下拉框的显示&#xff0c;或者说显示不出来。…

深度学习基础总结,无一句废话(附完整思维导图)

作者 | Python与算法社区责编 | Carol封图 | CSDN 付费下载于自视觉中国线型回归预测气温、预测销售额、预测商品价格等模型&#xff1a;权重&#xff0c;偏差模型训练&#xff1a;feed 数据学习模型参数值&#xff0c;使得误差尽可能小训练集、测试集、验证集、样本、标签、特…