欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++调用ffmpeg.exe提取视频帧

程序员文章站 2022-04-24 09:57:59
有时候,我们获得一段视频,需要将其中的每一帧都提取出来,来进行一些相关的处理,这时候我们就可以需要用到ffmpeg.exe来进行视频帧的提取。 ffmpeg简介:FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流 ......

有时候,我们获得一段视频,需要将其中的每一帧都提取出来,来进行一些相关的处理,这时候我们就可以需要用到ffmpeg.exe来进行视频帧的提取。

ffmpeg简介:FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。(百度百科

ffmpeg.exe下载:在编程可以使用FFmpeg的很多类库,这个在上就可以找到,不过下载的是源码,笔者未找到ffmpeg.exe解码器(可能是有点脑残,大家百度就好了,文件不大,也就几M),,ffmpeg.exe是ffmpeg库提供的一个编解码工具,可以对各种音视频进行编解码,并输出不同的封装格式文件。关于它的一些参数,大家看后面的程序了解一下.

编译环境:VS2017

实验代码:

 

#include <stdio.h>
#include <windows.h>
int main()
{
    char S[] = "C:\\ffmpeg.exe -i C:\\play.mp4 -r 1 -y -f image2 -ss 00:00:00 -t 513 -s 352*278 C:\\aa\\%d.jpg";
    system(S);
    return 0;
}

 

其中:C:\\ffmpeg.exe是我ffmpeg.exe的绝对路径

   C:\\play.mp4是视频的绝对路径

   1 表示的是每秒时间内的照片张数

   00:00:00指的是开始的时间

   352*278为生成的照片分辨率

   C:\\aa\\%d.jpg为最终存储照片的绝对路径,%d表示照片依次为 1,2,3,...

运行结果:

C++调用ffmpeg.exe提取视频帧

于是我的C:\aa目录下:

C++调用ffmpeg.exe提取视频帧

其实,这只是一个简单的程序调用,我们在CMD命令行中输入C:\ffmpeg.exe -i C:\play.mp4 -r 1 -y -f image2 -ss 00:00:00 -t 513 -s 352*278 C:\aa\%d.jpg 也会有同样的效果

如果有人使用的是C#也可以参照博客: