FFmpeg视频处理
目录
1. Ubuntu(wsl)安装 ffmpeg
2. ffmpeg查看指令
3. ffmpeg查看媒体文件信息
4. ffmpeg基础操作指令
5. ffmpeg视频抽帧
5.1 基于时间抽取帧
5.2 两种抽帧方式
5.3 视频流抽帧
5.4 视频批量抽帧
6. ffmpeg更改视频播放速度
7. ffmpeg视频格式转换
8. ffmpeg视频裁剪
9. ffmpeg图片转视频
10. ffmpeg更改视频分辨率
11. ffmpeg视频旋转
12. ffmpeg视频转码及压缩
13. ffmpeg合并多个视频
1. Ubuntu(wsl)安装 ffmpeg
更新源:sudo apt update
添加源:sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next
安装ffmpeg:sudo apt-get install ffmpeg
查看版本:ffmpeg -version
2. ffmpeg查看指令
查看ffmpeg支持的编码器:ffmpeg configure -encoders
查看ffmpeg支持的解码器:ffmpeg configure -decoders
查看ffmpeg支持的通信协议:ffmpeg configure -protocols
查看ffmpeg所支持的音视频编码格式、文件封装格式与流媒体传输协议等:ffmpeg configure --help
查看ffmpeg的支持格式的列表:ffmpeg -formats
获取ffmpeg使用帮助:man ffmpeg
3. ffmpeg查看媒体文件信息
ffmpeg -i video_file.mp4 # 查看视频文件信息
ffmpeg -i audio_file.mp3 # 查看音频文件信息
# 使用 -hide_banner 隐藏掉与文件无关的信息(ffmpeg本身的信息)
ffmpeg -i video_file.mp4 -hide_banner
ffmpeg -i audio_file.mp3 -hide_banner
4. ffmpeg基础操作指令
- 查看视频总帧数
ffprobe -v error -count_frames -select_streams v:0 -show_entries stream=nb_frames -of default=nokey=1:noprint_wrappers=1 test.mp4
- 视频中抽取音频,直接加一个 -vn 参数就可以
ffmpeg -i video.mp4 -vn audio.mp3
- 使用 -an 来获得纯视频 , -an 标记会让所有的音频参数无效
ffmpeg -i video_input.mp4 -an -video_output.mp4
- jpg转换成png,其它格式转换同理
ffmpeg -i ./images/img%5d.jpg ./images_new/img%5d.png
-
设置视频的屏幕高宽比,使用 -aspect 标志设置一个视频文件的屏幕高宽比。通常使用高宽比:16:9,4:3,16:10,5:4,2:21:1,2:35:1,2:39:1
ffmpeg -i input.mp4 -aspect 16:9 output.mp4
5. ffmpeg视频抽帧
5.1 基于时间抽取帧
- 参数说明:-ss 设定起始抽帧时间,语法:hh:mm:ss;-t 表示抽帧持续时间,单位为秒;-vframes 指定抽取的帧数
ffmpeg -i test.mp4 -r 1 -ss 00:00:05 -f image2 img_%05d.jpeg
ffmpeg -i test.mp4 -r 1 -ss 00:00:05 -vframes 5 -f image2 img_%05d.jpeg
ffmpeg -i test.mp4 -r 1 -t 4 -f image2 img_%05d.jpeg
- input seeking。input seeking使用的是key frames,所以速度很快;参数说明:-frame:v 5,在video stream上截取5帧。
ffmpeg -ss 00:00:05 -i test.mp4 -frames:v 5 img_%05d.jpg
- output seeking。output seeking是逐帧decode,直到1分05秒,所以速度很慢
ffmpeg -i test.mp4 -ss 00:00:05 -frames:v 5 img_%05d.jpg
5.2 两种抽帧方式
- 方法一,该抽帧方式画质较好。参数说明:-i 输入文件,源文件;-f 指定保存图片使用的格式;image2 图像解析模式; img%05d.jpg 格式化输出图片;-vf:设置过滤器;fps=fps=1/5 表示5s抽一帧,fps=fps=5 表示1s抽5帧
ffmpeg -i /data/test.mp4 -f image2 -vf fps=fps=1/5 -qscale:v 2 /data/img%05d.jpg
- 方法二,该抽帧方式画质稍差。 参数说明:-r 指定抽取的帧率,即从视频中每秒钟抽取图片的数量;1代表每秒抽取一帧,5表示一秒抽5张,1/5表示5秒抽一张。
ffmpeg -i test.mp4 -r 1 -f image2 img%05d.jpeg
5.3 视频流抽帧
-
rtsp流抽帧。参数说明:-y :如果提示文件已经存在,自动执行y,对已存在文件进行覆盖;-f image2:以图片格式保存;-r 1:帧数,每秒截取一帧,-r 1/5 表示每5秒抽取一帧;img%03d.jpg 格式化命名,会生成img001.jpg,img002.jpg
ffmpeg -i "rtsp://dxcs:cs123456@200.36.43.131:554/Streaming/Channels/1001" -y -f image2 -r 1/1 img%03d.jpg
-
rtsp流抽帧,tcp协议推流需要加上: -rtsp_transport tcp
ffmpeg -rtsp_transport tcp -i "rtsp://dxcs:cs123456@200.36.43.131:554/Streaming/Channels/1001" -y -f image2 -r 1/5 img%03d.jpg
-
直接保存RTMP视频流到本地
ffmpeg -i rtmp://live.hkstv.hk.lxdns.com/live/hks -c copy ./test1.flv
-
直接保存RTSP视频流到本地。参数说明:-vcodec copy 表示不重新编码,在格式未改
ffmpeg -i rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov -vcodec copy -acodec copy ./rtsp1.flv
5.4 视频批量抽帧
- 视频文件目录
- videos
- 1.mp4
- 2.mp4
- ………
- videos_imgs
- 为空(脚本会以视频文件名自动创建文件夹,并保存抽帧图像)
- bash frame.bash
- videos
- 批量抽帧shell脚本 frame.bash
#!/usr/bin/env bashvideos_root=./videos
save_root=./videos_imgs/
for video in $videos_root/*;
doecho $videosave_dir=$save_root$(basename $video)if [ ! -d $save_dir ];thenmkdir $save_dirfiffmpeg -i $video -f image2 -vf fps=fps=1/5 -qscale:v 2 $save_dir/img%05d.jpg
done
6. ffmpeg更改视频播放速度
-
双倍视频播放速度
ffmpeg -i test.mp4 -vf "setpts=0.5*PTS" result.mp4
-
四倍视频播放速度
ffmpeg -i test.mp4 -an -r 50 -filter:v "setpts=0.25*PTS" result.mp4
-
降低视频播放速度,使用一个大于 1 的倍数
ffmpeg -i test.mp4 -vf "setpts=4.0*PTS" output.mp4
7. ffmpeg视频格式转换
-
转换mp4文件到avi文件
ffmpeg -i test.mp4 output.avi
-
转换flv格式视频为mpeg格式
ffmpeg -i video.flv video.mpeg
-
同时指定多个输出后缀,输出多个文件
ffmpeg -i audio_input.wav audio_output_1.mp3 audio_output_2.ogg
-
维持源视频文件的质量,使用-qscale 0 参数
ffmpeg -i test.mp4 -qscale 0 output.flv
-
转换所给定视频input.mp4文件的开始 10 秒到视频 .avi 格式
ffmpeg -i input.mp4 -t 10 output.avi
8. ffmpeg视频裁剪
- 基于时间进行视频裁剪。参数说明:开始时间 (-ss HH:MM:SS), 持续秒数 (-t duration), 结束时间 (-to HH:MM:SS), 和开始秒数 (-s duration)
ffmpeg -i input_audio.mp3 -ss 00:01:14 output_audio.mp3
ffmpeg -i input_audio.wav -ss 00:00:30 -t 10 output_audio.wav
ffmpeg -i input_video.h264 -ss 00:01:30 -to 00:01:40 output_video.h264
ffmpeg -i input_audio.ogg -ss 5 output_audio.ogg
ffmpeg -i input.mp4 -ss 00:00:50 -codec copy -t 50 output.mp4
- 裁剪视频文件为多个部分。参数说明:-t 00:00:30 表示从视频的开始到视频的第 30 秒创建一部分视频;-ss 00:00:30 为视频的下一部分显示开始时间戳。表示第 2 部分将从第 30 秒开始,并将持续到原始视频文件的结尾
ffmpeg -i input.mp4 -t 00:00:30 -c copy part1.mp4 -ss 00:00:30 -codec copy part2.mp4
- 基于宽高进行裁剪。参数说明:input.mp4 – 源视频文件;-filter:v – 表示视频过滤器;crop – 表示裁剪过滤器(w – 源视频中裁剪的矩形的宽度,h – 矩形的高度;x – 源视频中裁剪的矩形的 x 坐标 ;y – 矩形的 y 坐标
ffmpeg -i input.mp4 -filter:v "crop=w:h:x:y" output.mp4
# 想要一个来自视频的位置 (200,150),且具有 640 像素宽度和 480 像素高度的视频;剪切视频将影响质量
ffmpeg -i input.mp4 -filter:v "crop=640:480:200:150" output.mp4
9. ffmpeg图片转视频
-
规则图片名称转视频。参数说明:-r 25 表示每秒播放25帧;-b 200k 指定码率为200k;将`img00001.jpg’, `img00002.jpg'这种顺序排列的图片文件转制作为视频
ffmpeg -f image2 -i ./images/img%05d.jpg ./result.mp4
ffmpeg -f image2 -i './images/img%05d.jpg' -vcodec libx264 -r 25 -b 200k result.mp4
-
不规则图片名称转视频。参数说明:-framerate 10:视频帧率;-pattern_type glob:Glob pattern 模糊匹配;-f image2pipe:图像管道,模糊匹配得到图片名称
ffmpeg -framerate 10 -pattern_type glob -i './images/*.jpg' out.mp4
cat ./images/*.jpg | ffmpeg -f image2pipe -i - output.mp4
10. ffmpeg更改视频分辨率
-
设置一个视频文件为指定的分辨率
# 使用 -c:a 来保证音频编码是正确的
ffmpeg -i input.mp4 -filter:v scale=1280:720 -c:a copy output.mp4
# 参数说明:-s 表示设置目标视频文件的分辨率,将设置所给定视频文件的分辨率到 1280×720
ffmpeg -i test.mp4 -s 1280:720 -c:a copy output.mp4
11. ffmpeg视频旋转
-
将视频顺时针旋转90°
ffmpeg -i test.mp4 -c copy -metadata:s:v:0 rotate=90 result.mp4
ffmpeg -i input.avi -vf "rotate=90*PI/180"
-
上下颠倒视频(翻转了180°)
ffmpeg -i input.mp4 -vf "rotate=PI"
12. ffmpeg视频转码及压缩
-
MPEG4编码转成H264编码
ffmpeg -i data.mp4 -strict -2 -vcodec h264 output.mp4
-
H264编码转成MPEG4编码
ffmpeg -i data.mp4 -strict -2 -vcodec mpeg4 output.mp4
-
视频裁剪转码及压缩。-crf 参数 (恒定质量因子). 较小的crf 意味着较大的码率,同时使用 libx264 编码器也有助于减小文件体积
ffmpeg -i data.mp4 -ss 00:03 -to 10:08 -c:v libx264 -crf 30 result.mp4
ffmpeg -i video_input.mp4 -c:v libx264 -crf 28 video_output.mp4
# 压缩视频文件,减小视频文件的大小,将损失视频质量。如果 24 太有侵略性,可以降低 -crf 值到或更低值
ffmpeg -i test.mp4 -vf scale=1280:-1 -c:v libx264 -preset veryslow -crf 24 output.mp4
13. ffmpeg合并多个视频
# 创建包含想接合文件的准确的路径的 join.txt。所有的文件都应该是相同的格式(相同的编码格式)。
# 所有文件的路径应该逐个列出,例如:
file /home/myvideos/part1.mp4
file /home/myvideos/part2.mp4
file /home/myvideos/part3.mp4
file /home/myvideos/part4.mp4
ffmpeg -f concat -i join.txt -c copy output.mp4
#若出现错误join.txt: Operation not permitted,添加-safe 0
ffmpeg -f concat -safe 0 -i join.txt -c copy output.mp4
相关文章:
FFmpeg视频处理
目录 1. Ubuntu(wsl)安装 ffmpeg 2. ffmpeg查看指令 3. ffmpeg查看媒体文件信息 4. ffmpeg基础操作指令 5. ffmpeg视频抽帧 5.1 基于时间抽取帧 5.2 两种抽帧方式 5.3 视频流抽帧 5.4 视频批量抽帧 6. ffmpeg更改视频播放速度 7. ffmpeg视频格…...
FreeRTOS任务通知 | FreeRTOS十二
目录 说明: 一、任务通知 1.1、什么是任务通知 1.2、任务通知优势与劣势 1.3、任务通知值的更新方式 1.4、任务通知值状态 1.5、任务通知状态 1.6、任务通知方式类型 二、任务通知相关API函数 2.1、常用的发送通知API函数 2.2、带通知值的发送通知函数 …...
CentOS搭建博客typecho
Ubuntu搭建博客typecho_Dyansts的博客-CSDN博客 见过这样的文章展示页面吗? 详细视频安装教程: 9分钟快速搭建typecho博客,让你不再烦恼_哔哩哔哩_bilibili 现在就把他搭建出来 展示页面:Hello World 其他的插件:…...
湖南中创教育PMP如何实施风险应对,避免产生投诉
一、评估风险 评估风险影响的直接或间接价值 面临的潜在威胁,威胁发生的可能性有多大? 威胁一旦发生,损失是多大? 评估承受风险的能力 采取怎样的措施才能将损失降到最低,甚至为零 二、规划风险 对识别出来的风险进行分组或分类 确定…...
Urho3D子系统
通过使用函数RegisterSubsystem(),任何对象都可以作为子系统注册到上下文中。然后,通过调用GetSubsystem(),同一上下文中的任何其他对象都可以访问它们。每个对象类型只能有一个实例作为子系统存在。 发动机初始化后,以下子系统将…...
无线网络术语总结
学习802.11协议,其中有一些英文缩略词,这里做一下总结与记录。 学习资料:知乎徐方鑫 802.11相关文章 802.11协议精读3:CSMA/CD与CSMA/CA - 知乎 (zhihu.com) 无线网络术语缩写全称中文含义APAccessPoint无线访问节点用于无线网络…...
海卡和海派有什么区别
一、海卡和海派有什么区别 海派和海卡实际上就是快船和慢船的区别。都是头程选用海运的方式,海派是到海港海关清关拆柜后,尾程配送是采用快递配送。而海卡则是到海港海关清关拆柜后,尾程选用货车配送。1、海派比较适用于小件货物 海派是海运抵…...
vue3学习资料整理
一、一个后端程序员为什么要学习前端? 1.网上找到的学习理由 《Java后端的我也要学Node.js 了》 https://blog.csdn.net/yusimiao/article/details/104689007 《nodejs后端开发的优缺点(nodejs的概念与特征详解)》 https://www.1pindao.co…...
Linux基础语法进阶版
Linux基础语法 查看文件内容指令 touch 主要是修改文件时间,多用创建文件 -a #只更改访问时间 -m #只更改修改时间 -c --no-create#不创建任何文件cat 展示小文件内容 -b #对于非空输出行编号 -n #对于所有行输出编号 -E #在每行结束处显示"$" -A #展示所…...
近红外染料标记小分子1628790-37-3,Cyanine5.5 alkyne,花青素CY5.5炔基
试剂基团反应特点:Cyanine5.5 alkyne用于点击化学标记的远红外/近红外染料炔烃。氰基5.5是Cy5.5的类似物,一种流行的荧光团,已广泛用于各种应用,包括完整生物体成像。在温和的铜催化化学条件下,该试剂可与叠氮基共轭&a…...
洛谷——P1004 方格取数
【题目描述】 设有 NN 的方格图 (N≤9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字 0。如下图所示(见样例): A 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 0 0 0 0 0 7 0 0 0 0 0 0 14 0 0…...
Linux删除软链接
不防大家试试 unlink 命令 首先我们先来创建一个文件 #mkdir test_chk #touch test_chk/test.txt #vim test_chk/test.txt (这一步随便在这个test.txt里写点东东即可) 下面我们来创建test_chk目录 的软链接 #ln-s test_chk test_chk_ln 软链接创建好了,我们来…...
【自然语言处理】【大模型】用于大型Transformer的8-bit矩阵乘法介绍
用于大型Transformer的8-bit矩阵乘法介绍原文地址:A Gentle Introduction to 8-bit Matrix Multiplication for transformers at scale using transformers, accelerate and bitsandbytes 相关博客 【自然语言处理】【大模型】用于大型Transformer的8-bit矩阵乘法介…...
设计模式之工厂模式详解和应用
目录1 工厂模式的历史由来2.简单工厂模式2.1 简单工厂模式定义2.2 简单工厂模式案例2.3 简单工厂模式相关源码2.4 简单工厂模式优缺点3 工厂方法模式3.1 工厂方法模式定义3.2 工厂方法模式案例3.3 工厂方法模式源码3.4 工厂方法模式优缺点4 抽象工厂模式4.1 抽象工厂模式定义4.…...
ArcGIS中的附件功能
从ArcGIS10起,空间数据库增加了"附件"的功能,可灵活管理与要素相关的附加信息,可以是图像、PDF、文本文档或任意其他文件类型。例如,如果用某个要素表示建筑物,则可以使用附件来添加多张从不同角度拍摄的建筑物照片。 启动附件功能 要想使用附件功能,要素类必…...
epoll单台设备支持百万并发连接
一些概念: linux下一切接文件,文件描述符fd,文件I/O(包含socket,文本文件等),I/O多路复用,reactor模型,水平触发,边沿触发,多线程模型,阻塞和非阻塞…...
网络字节序
文章目录网络字节序网络字节序 内存中的多字节数据相对于内存地址有大端和小端之分, 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分, 网络数据流同样有大端小端之分. 网络数据流的地址统一按大端处理 发送主机通常将发送缓冲区中的数据按内存地址从低到高的…...
03- SVC 支持向量机做人脸识别 (项目三)
数据集描述: sklearn的lfw_people函数在线下载55个外国人图片文件夹数据集来精确实现人脸识别并提取人脸特征向量数据集地址: sklearn.datasets.fetch_lfw_people — scikit-learn 1.2.1 documentationPCA降维: pca PCA(n_components0.9) 数据拆分: X_train, X_test, y_tra…...
浅谈指向二维数组元素的指针变量
(1)指向数组元素的指针变量 例1.有一个3X4的二维数组,要求用指向元素的指针变量输出二维数组各元素的值. 编写程序 1 #include <stdio.h>2 int main()3 {4 int a[3][4] { 1,3,5,7,9,11,13,15,17,19,21,23 };5 int *p;6 for (p a[0]; p < a[0] 12; p) …...
左右值引用和移动语义
文章首发公众号:iDoitnow 1. 左右值和左右值引用 什么是左值、右值呢?一种极不严谨的理解为:在赋值的时候,能够被放到等号左边的值为左值,放在右边的值为右值。例如: int sum(int x, int y){return x y;…...
一起学习用Verilog在FPGA上实现CNN----(七)全连接层设计
1 全连接层设计 1.1 Layer 进行线性计算的单元layer,原理图如图所示: 1.2 processingElement Layer中的线性计算单元processingElement,原理图如图所示: processingElement模块展开原理图,如图所示,包含…...
tomcat打debug断点调试
windows debug调试 jdk版本:1.8.0_181 tomcat版本:apache-tomcat-9.0.68.0 idea版本:2020.1 方法一 修改catalina.bat 在%CATALINA_HOME%\bin\catalina.bat中找到 set “JAVA_OPTS%JAVA_OPTS% -Djava.protocol.handler.pkgsorg.apache…...
如果持有互斥锁的线程没有解锁退出了,该如何处理?
文章目录如果持有互斥锁的线程没有解锁退出了,该如何处理?问题引入PTHREAD_MUTEX_ROBUST 和 pthread_mutex_consistent登场了结论:如果持有互斥锁的线程没有解锁退出了,该如何处理? 问题引入 看下面一段代码…...
信息论绪论
本专栏针包含信息论与编码的核心知识,按知识点组织,可作为教学或学习的参考。markdown版本已归档至【Github仓库:information-theory】,需要的朋友们自取。或者关注公众号【AIShareLab】,回复 信息论 也可获取。 文章目…...
Buffer Status Reporting(BSR)
欢迎关注同名微信公众号“modem协议笔记”。 以一个实网中的异常场景开始,大概流程是有UL data要发送,UE触发BSR->no UL grant->SR->no UL grant->trigger RACH->RACH fail->RLF->RRC reestablishment:简单描述就是UE触…...
代码随想录LeetCode | 单调栈问题
前沿:撰写博客的目的是为了再刷时回顾和进一步完善,其次才是以教为学,所以如果有些博客写的较简陋,是为了保持进度不得已而为之,还请大家多多见谅。 预:看到题目后的思路和实现的代码。 见:参考…...
C++之可调用对象、bind绑定器和function包装器
可调用对象在C中,可以像函数一样调用的有:普通函数、类的静态成员函数、仿函数、lambda函数、类的非静态成员函数、可被转换为函数的类的对象,统称可调用对象或函数对象。可调用对象有类型,可以用指针存储它们的地址,可…...
MongoDB--》文档查询的详细具体操作
目录 统计查询 分页列表查询 排序查询 正则的复杂条件查询 比较查询 包含查询 条件连接查询 统计查询 统计查询使用count()方法,其语法格式如下: db.collection.count(query,options) ParameterTypeDescriptionquerydocument查询选择条件optio…...
网络协议(六):网络层
网络协议系列文章 网络协议(一):基本概念、计算机之间的连接方式 网络协议(二):MAC地址、IP地址、子网掩码、子网和超网 网络协议(三):路由器原理及数据包传输过程 网络协议(四):网络分类、ISP、上网方式、公网私网、NAT 网络…...
热启动预示生态起航的Smart Finance,与深度赋能的SMART通证
2023年初加密市场的回暖,意味着各个赛道都将在新的一年里走向新的叙事。最近,我们看到GameFi赛道也在市场回暖的背景下,逐渐走出阴霾。从融资数据上看,1月获得融资的GameFi项目共12个,融资突破8000万美元,1…...
莞城仿做网站/网络推广推广
传送门 \(REDONE\) 贡献可以拆成\(X(Y1)Y\),那么一个数\(x\)的贡献对最终答案的贡献就是\(x(a_11)(a_21)...\),那么最终答案肯定是\(\sum\limits_{i1}^ni\prod\limits_{j1}^{i-1}(j1)\)最优 void init(){fac[0]1;fp(i,1,1e6)fac[i]mul(fac[i-1],i1),ans[…...
衢州集团网站建设/青岛seo网站关键词优化
/*获得当前系统时间,插入到mysql数据库,数据库中的数据类型为datatime,对应于java.sql.Timestamp *时间格式为yyyy-MM-ddHH:mm:ss *pst.setTimestamp(4, new java.sql.Timestamp(new java.util.Date().getTime())); …...
修改网站空间服务器密码/网络推广优化品牌公司
下面要给大家带来的就是Java Math类的常用方法三角函数运算方面的内容,一起通过文章来进行了解吧。Math 类中包含的三角函数方法及其说明如下所示:在表 3 中,每个方法的参数和返回值都是 double 类型,参数以弧度代替角度来实现&am…...
设计参考图哪个网站好/微信怎么推广找客源
http://www.cnblogs.com/whoislcj/p/5711001.html 前言: 上篇介绍了自定义控件的基本要求以及绘制的基本原理,本篇文章主要介绍如何给自定义控件自定义一些属性。本篇文章将继续以上篇文章自定义圆形百分比为例进行讲解。有关原理知识请参考Android自定…...
长沙网站建设 599/站长seo
1. 查看磁带状态 mt -f /dev/rmt/0 status 2. 回卷磁带到起始点 mt -f /dev/rmt/0 rewind 3. 磁带向前跳过n个EOF标记,即定位磁带到第n1个备份文件 mt -f /dev/rmt/0 fsf n 4. 移动磁带到最后一个备份的尾部(向磁带中追加备份时有用) mt -f /dev/rmt/0 eom 5. 删除磁…...
做网站后要回源码有何用/厦门百度开户
Linux 管理员手册(5)--引导和关机(转)本节说明当Linux系统引导和关机时发生了什么,应该任何正确完成. 如果没有遵循正确的过程, 文件可能损坏或丢失. 引导和关机概述 开启计算机并导致其操作系统被加载的过程 叫引导. The name comes from an image of the computer pulling it…...