前言

  本篇章是对之前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 <QObject> extern "C" {
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
#include <libavdevice/avdevice.h>
#include <libavformat/version.h>
#include <libavutil/time.h>
#include <libavutil/mathematics.h>
} class FFmpegManager : public QObject
{
Q_OBJECT
public:
explicit FFmpegManager(QObject *parent = nullptr); signals: public slots:
}; #endif // FFMPEGMANAGER_H

FFmpegManager.cpp

#include "FFmpegManager.h"
#include <QDebug>
#include <QDateTime> //#define LOG qDebug()<<
//#define LOG qDebug()<<__FILE__<<__LINE__<<
#define LOG qDebug()<<__FILE__<<__LINE__<<QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss:zzz") FFmpegManager::FFmpegManager(QObject *parent)
: QObject(parent)
{
LOG << avcodec_configuration();
}
 

工程模板v1.0.0

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

 
 

若该文为原创文章,未经允许不得转载
原博主博客地址:https://blog.csdn.net/qq21497936
原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/108542400

FFmpeg开发笔记(三):ffmpeg介绍、windows编译以及开发环境搭建的更多相关文章

  1. Hi3516开发笔记(二):Hi3516虚拟机基础环境搭建之串口调试、网络连接以及sftp文件传输

    前言   搭建Hi3516的基础虚拟机,为交叉编译环境搭建前期工作.后续会编译一个基本的C语言程序Demo,在HI3516上跑.   虚拟机   开发本对虚拟机做了一些基本要求,如下图:    其实重 ...

  2. PHP全栈开发(三):CentOS 7 中 PHP 环境搭建及检测

    简单回顾一下我们在(一).(二)中所做的工作. 首先我们在(一)中设置了CentOS 7的网络. 其实这些工作在CentOS 6中都是很容易的,因为有鸟哥的Linux私房菜这样好的指导. 但是这些操作 ...

  3. Django开发笔记三

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.基于类的方式重写登录:views.py: from ...

  4. Modbus库开发笔记之十一:关于Modbus协议栈开发的说明(转)

    源: Modbus库开发笔记之十一:关于Modbus协议栈开发的说明

  5. ffmpeg学习笔记-初识ffmpeg

    ffmpeg用来对音视频进行处理,那么在使用ffmpeg前就需要ffmpeg有一个大概的了解,这里使用雷神的ppt素材进行整理,以便于复习 音视频基础知识 视频播放器的原理 播放视频的流程大致如下: ...

  6. Modbus库开发笔记之十一:关于Modbus协议栈开发的说明

    对于Modbus协议栈的整个开发内容,前面已经说得很清楚了,接下来我们说明一下与开发没有直接关系的内容. 首先,关于我为什么开发这个协议栈的问题.我们的初衷只是想能够在开发产品时不用每次都重写这一部分 ...

  7. WAMP(Windows+Apache+Mysql+PHP)环境搭建

    学习PHP已经有一段时间,一直没有写过关于开发环境搭建的笔记,现在补上吧,因为安装配置的步骤记得不是很清楚,借鉴了一些别人的经验,总结如下: 首先去官方网站下载各个软件,下载需要的版本: Apache ...

  8. Windows下的SVN环境搭建详解

    前言:最近因为要和其他人合作开发项目,所以花时间搭建了SVN的环境. 因为是初次使用SVN,对于SVN的环境搭建很不熟悉,再加上网上的教程都介绍的比较粗略,导致前前后后重做了几次. 当然最终是搭建成功 ...

  9. wnmp(windows+nginx+mysql+php)环境搭建和配置

    要求 必备知识 熟悉基本编程环境搭建. 运行环境 windows 7(64位); nginx-1.4.7;MySQL Server 5.5php-5.4.39-nts 下载地址 环境下载 Nginx是 ...

随机推荐

  1. Hexo博客中插入 Chart 动态图表

    该文基本(全部)来自于chatjs中文文档 由于使用pjax,导致页面需要二次刷新才会显示表格,故引入了自动刷新的JS,但这样会导致回退标签失效 背景 今天在谷歌上逛博客时,突然发现shen-yu大佬 ...

  2. 基于小程序云Serverless开发微信小程序

    本文主要以使用小程序云Serverless服务开发一个记事本微信小程序为例介绍如何使用小程序云Serverless开发微信小程序.记事本小程序的开发涉及到云函数调用.云数据库存储.图片存储等功能,较好 ...

  3. 史上最全且最简洁易懂的Activity启动流程解析

    Activity的启动流程是一个资深Android工程师必须掌握的内容,也是高职级面试中的高频面试知识点,无论是从事应用层开发,还是Framework开发,其重要性都无需我多言.而要真正理解它,就不可 ...

  4. 从ReentrantLock详解AQS原理源码解析

    数据结构 java.util.concurrent.locks.AbstractQueuedSynchronizer类中存在如下数据结构. // 链表结点 static final class Nod ...

  5. JavaScript设计模式之命令模式【命令解耦】

    在讲解命令模式之前我们先来了解一个生活中的命令模式场景: 场景1: 医院看病抓药: 当你因为肾虚到医院看医生,医生一番操作之后得出结论:要吃个疗程[夏桑菊].[小柴胡](药名纯属虚构,真的肾虚就找医生 ...

  6. JavaScript学习系列博客_11_JavaScript中的for语句

    for循环 - 语法: for(①初始化表达式 ; ②条件表达式 ; ④更新表达式){ ③语句... } - 执行流程: 首先执行①初始化表达式,初始化一个变量,(这里只会执行一次) 然后对②条件表达 ...

  7. Robotium和Espresso大PK——速度篇

    引言 Espresso和Robotium都是android UI自动化测试框架,且都是建立在Android Instrument的基础之上.对于测试人员来说,UI测试应该具备如下三个特点:1. 容易编 ...

  8. 基于Java的二叉树的三种遍历方式的递归与非递归实现

    二叉树的遍历方式包括前序遍历.中序遍历和后序遍历,其实现方式包括递归实现和非递归实现. 前序遍历:根节点 | 左子树 | 右子树 中序遍历:左子树 | 根节点 | 右子树 后序遍历:左子树 | 右子树 ...

  9. 基于 abp vNext 微服务开发的敏捷应用构建平台 - 项目介绍

    缘起 目前使用ABP框架已经将近3年了,大大小小的项目也陆陆续续做了很多.由于现有信息系统的架构模式是在底层的技术平台上直接构建信息系统并采用技术主导,使用业务无关的编程工具来开发信息系统的缺陷使得系 ...

  10. 瑞发科NS1081主控 + THGBM5G7A2JBAIR(eMMC) 制作16GB闪存驱动器

    文档标识符:NS1081_FLASH-DRIVE_D-P9 作者:DLHC 最后修改日期:2020.8.22 本文链接:https://www.cnblogs.com/DLHC-TECH/p/NS10 ...