FFmpeg开发笔记(三):ffmpeg介绍、windows编译以及开发环境搭建

若该文为原创文章,未经允许不得转载

原博主博客地址:https://blog.csdn.net/qq21497936

原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062

本文章博客地址:https://blog.csdn.net/qq21497936/article/details/108542400

各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究

红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门)

FFmpeg开发专栏(点击传送门)

上一篇:《FFmpeg开发笔记(二):ffmpeg在ubuntu编译以及开发环境搭建》

下一篇:敬请期待

前言

  本篇章是对之前windows环境的补充,之前windows的是无需进行编译的,此篇使用源码进行编译,版本就使用3.4.8。

FFmpeg简介

FFmpeg是领先的多媒体框架,能够解码,编码, 转码,mux,demux,流,过滤和播放人类和机器创建的几乎所有内容。它支持最模糊的古代格式,直至最前沿。无论它们是由某些标准委员会,社区还是公司设计的。它还具有高度的可移植性:FFmpeg可以在各种构建环境,机器体系结构和配置下,跨Linux,Mac OS X,Microsoft Windows,BSD,Solaris等编译,运行并通过我们的测试基础架构FATE。

库功能介绍

FFmpeg下载

官方地址:http://ffmpeg.org/download.html#releases

CSDN下载地址:https://download.csdn.net/download/qq21497936/12838391

开发使用当前3.4.8稳定版本:

三个都点击了,下载了,如下图:

经过查看,源码中只有configure和makefile,那么是在linux上编译的,笔者想编译windows平台上的mingw32版本的,说不定哪天就要修改编码呢,别说opencv遇到几次了。

FFmpeg编译

步骤一:准备msys环境

下个msys安装,当然也可以使用msys2,笔者倾向msys,自己配置自己的开发环境。

当然安装msys之后,需要将我们Qt5.9.3的mingw32编译工具链拷贝进去,并打开终端窗口将环境输入进去,结果如下:

export PATH=$PATH:/mingw530_32/bin/

&esmp;&esmp;

步骤二:重新部署库的源码位置,需要拷贝到msys下去

解压后,如下:

步骤三:配置configure

./configure --prefix=/home/21497/compile/ffmpeg/ffmpeg-3.4.8/install

./configure --prefix=/home/21497/compile/ffmpeg/ffmpeg-3.4.8/install --disable-x86asm

步骤四:解决问题“pr: command not found”

配置coreutils

下载地址:http://gnuwin32.sourceforge.net/packages/coreutils.htm

直接下载bin文件。

全拷贝过去,覆盖。

本文章博客地址:https://blog.csdn.net/qq21497936/article/details/108542400

步骤五:msys有平台问题,msys2没有,配置msys2环境

下载安装msys2,自带了很多环境,此处注意,我们要用Qt5.9.3的mingw32,如下图:

export PATH=$PATH:/mingw530_32/bin/

步骤六:配置configure切换msys2

./configure --prefix=/home/21497/compile/ffmpeg/ffmpeg-3.4.8/install --disable-

x86asm  --enable-shared

使用mingw32的环境变量,如下图:

步骤七:编译

make -j4

同样的问题,ar,参照步骤四,后继续:

直接转用make,简单粗暴,原理读者自己理解

步骤八:安装make install

模块化

&esmp;

测试Demo

FFmpegManager.h

#ifndef FFMPEGMANAGER_H

#define FFMPEGMANAGER_H

#include

extern "C" {

    #include

    #include

    #include

    #include

    #include

    #include

    #include

}

class FFmpegManager : public QObject

{

    Q_OBJECT

public:

    explicit FFmpegManager(QObject *parent = nullptr);

signals:

public slots:

};

#endif // FFMPEGMANAGER_H

FFmpegManager.cpp

#include "FFmpegManager.h"

#include

#include

//#define LOG qDebug()<<

//#define LOG qDebug()<<__FILE__<<__LINE__<<

#define LOG qDebug()<<__FILE__<<__LINE__<

FFmpegManager::FFmpegManager(QObject *parent)

    : QObject(parent)

{

    LOG << avcodec_configuration();

}

工程模板v1.0.0

  对应工程模板v1.0.0(windows Qt5.9.3 mingw32)

上一篇:《FFmpeg开发笔记(二):ffmpeg在ubuntu编译以及开发环境搭建》

下一篇:敬请期待

若该文为原创文章,未经允许不得转载

原博主博客地址:https://blog.csdn.net/qq21497936

原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062

本文章博客地址:https://blog.csdn.net/qq21497936/article/details/108542400

你可能感兴趣的:(FFmpeg开发笔记(三):ffmpeg介绍、windows编译以及开发环境搭建)