zoukankan      html  css  js  c++  java
  • C++调用ffmpeg.exe提取视频帧

    有时候,我们获得一段视频,需要将其中的每一帧都提取出来,来进行一些相关的处理,这时候我们就可以需要用到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:aa目录下:

    其实,这只是一个简单的程序调用,我们在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#也可以参照博客:http://www.cnblogs.com/cdp1591652208/p/9005854.html

       

       

       

  • 相关阅读:
    七牛云李意扬:如何收集 Go 实时覆盖率丨ECUG Meetup 回顾
    OpenTelemetry 微服务链路追踪
    空接口
    安全规则集合
    采用最快回应
    Golang单元测试实战
    源码 kratos 配置热加载分析
    烟花 光影
    控制Repeater显示列数
    基本代码安全知识
  • 原文地址:https://www.cnblogs.com/junjunjun123/p/9301095.html
Copyright © 2011-2022 走看看