ffmpeg的安装和视频帧抽取(ubuntu/windows系统通用)

一、安装ffmpeg视频编解码库

利用anaconda,安装ffmpeg

注意,下面第3行代码中ffmpy这个包是用来在Python下调用ffmpeg的,但是不知道为什么用conda搜索不到,得换pip方式安装

conda config --add channels conda-forge
conda install ffmpeg
pip install ffmpy

安装后之后就可以cd到视频文件夹下开始抽帧了

二、对于单个视频

在要抽帧的视频文件夹中使用下面这行命令

# 将名为123.mp4的视频文件抽成一张张的图片(抽帧)
ffmpeg -i "123.mp4" -r 5 -q:v 2 -f image2 %d.jpeg

然后,在当前视频目录下面就可以找到抽出来的视频帧了

备注:
-i 是用来获取输入文件的名称,-i “123.mp4” 就是获取这个叫做123的mp4视频文件,当然你用avi格式之类的也可以;
-r 是设置每秒提取图片的帧数,也即采样率,-r 5的意思就是每秒抽取5张视频帧;
-q:v 2 这个可以提高抽取到的图片的质量的;
-f 是设定输出格式,这里image2就是图像解析模式,还有contact连接模式等;
%d.jpeg,可以指定文件的输出名字jpeg,jpg,png之类的都可以,也可以在前面加个路径,变成 /data/mp4-%05d.jpeg

三、对于批量视频

对于批量视频,一个一个弄太麻烦了,我们可以写一个shell脚本来自动化的执行

把下面这段代码复制到ubuntu里,最后的文件扩展名可以写成是.sh
其实,扩展名并不影响脚本的执行,和文件内容相匹配的后缀只是方便我们自己去看当前脚本用的哪个解释器(或者说哪个shell)
真正影响的其实是代码第一行的 #! 这个标记后面的内容,比如下面跟在标记后的是bash。#! 是一个约定俗成的标记,可以告诉系统,下面这个脚本用什么shell来执行

#!/usr/bin/env bash
 
videos_root=/home/kjp/data/video/test/SquareDancing  # 视频目录
save_root=/home/kjp/data/video/test/picture  # 视频帧目录

for video in $videos_root/*;
do
echo $video
save_dir=$save_root$(basename $video)
if [ ! -d $save_dir ];then
mkdir $save_dir  # 生成文件夹
fi
ffmpeg -i $video -r 2 -q:v 2 -f image2 $save_dir/%05d.jpeg  # 抽帧
 
done

写好.sh文件之后,接下来就开始执行

首先cd到文件所在的目录,打开终端开始执行,具体如下

chmod +x ./test.sh
./test.sh

这里面通过chmod +x赋予.sh脚本执行权限
另外 ./ 这两个符号不可少,./就是告诉系统仅在当前文件夹下面搜索test.sh,否则系统会在PATH路径中搜索,然后搜索不到就理所当然的报错


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值