首页 » Web前端 » php失足php_ffmpegdll技巧_ffmpeg音视频根本入门

php失足php_ffmpegdll技巧_ffmpeg音视频根本入门

访客 2024-11-18 0

扫一扫用手机浏览

文章目录 [+]

ffmpeg环境搭建

音视频根本入门

php失足php_ffmpegdll技巧_ffmpeg音视频根本入门

常用工具

php失足php_ffmpegdll技巧_ffmpeg音视频根本入门
(图片来自网络侵删)
音视频先容

1. yasm/nasm

旧版ffmpeg及x264利用yasm汇编器

2. x264

3. x265

ffmpeg工程中实现了h265解码器,但无h265编码器。
因此须要安装第三方编码器x265

4. SDL

5. ffmpeg

fmpeg环境搭建

一、FFMPEG获取:

这里以Windows版为例,我们前期的例子都是直接在Windows上进行的,因此直接下载Windows版本的,其他系统的先不管他。

下载地址:

https://ffmpeg.zeranoe.com/builds/

打开后可看到如下界面:

个中 Static 顾名思义便是静态库版本了。

Shared则是动态库版本。

Dev则是供应给开拓者用的Lib文件。

FFMPEG最新版已经是3了。

不过我们用的还是2.5的,当然也可以用其他的,如2.8。
基本上版本2的API都是没差的,因此对开拓没有影响。

首先下载Dev库,点击Previous FFmpeg 32-bit Dev Versions 。

找到2.5版本的 点击下载:

二、在工程中引用FFMPEG

打开我们前面搭建好的Qt Creator。
新建一个工程,随便都行,就选纯C++工程吧:

牢记:名字和路径一定不能有中文。

我的工程是放在 :E:MyProjectsVideoDevelop 目录下

解压出刚才下载的ffmpeg,解压后的目录名字是ffmpeg-2.5.2-win32-dev

改名成ffmpeg,并且只留下include和lib这2个文件夹,其他都删了。

将ffmpeg直接复制到我们的工程目录下:

Qt Creator中修正工程配置文件 testFFmpeg.pro:

在里面加入:

INCLUDEPATH+=$$PWD/ffmpeg/includeLIBS+=$$PWD/ffmpeg/lib/avcodec.lib$$PWD/ffmpeg/lib/avdevice.lib$$PWD/ffmpeg/lib/avfilter.lib$$PWD/ffmpeg/lib/avformat.lib$$PWD/ffmpeg/lib/avutil.lib$$PWD/ffmpeg/lib/postproc.lib$$PWD/ffmpeg/lib/swresample.lib$$PWD/ffmpeg/lib/swscale.lib

这便是引用ffmpeg的头文件和库的意思,如下所示:

mian.cpp写成如下:

#include<iostream>usingnamespacestd;extern"C"{#include"libavcodec/avcodec.h"#include"libavformat/avformat.h"#include"libswscale/swscale.h"#include"libavdevice/avdevice.h"}///由于我们建立的是C++的工程///编译的时候利用的C++的编译器编译///而FFMPEG是C的库///因此这里须要加上extern"C"///否则会提示各种未定义intmain(){//这里大略的输出一个版本号cout<<"HelloFFmpeg!"<<endl;av_register_all();unsignedversion=avcodec_version();cout<<"versionis:"<<version;return0;

好了点击左下角的绿色按钮编译吧:

不一会儿便看到了二个缺点:

看到缺点的时候,莫方,2个而已嘛,不防先看看是啥缺点吧。

先双击第一个缺点:

跳到了common.h:

#ifdefined(__cplusplus)&&!defined(__STDC_CONSTANT_MACROS)&&!defined(UINT64_C)

#errormissing-D__STDC_CONSTANT_MACROS/#define__STDC_CONSTANT_MACROS

#endif

看不懂什么鬼意思,总之他的意思便是什么东西没定义了,那就按他的哀求定义一下吧:

修正main.cpp

在包含ffmpeg头文件的前面加上:

#define__STDC_CONSTANT_MACROS

如下图所示:

当然也可以直接在common.h的开头处加上#define __STDC_CONSTANT_MACROS

我习气的是后者,这样改完往后就直接复制改好的文件就行了,一劳永逸。

好了连续编译,这时候缺点变成一个了,连续双击缺点。

还是跳到了common.h。

这个文件还真是多事。

提示UINT64_C未声明,那就给他声明一下吧:

在common.h文件开头处加入

#ifndefINT64_C#defineINT64_C(c)(c##LL)#defineUINT64_C(c)(c##ULL)#endif

修正后的完全文件如下:

别忘了按CTRL+S.

好了,再次编译运行吧。

本以为结束了。

运行创造问题又来了:

只有一个黑框,我们上面写的那些信息并没有打印出来。

首先打开工程目录,会创造同目录下多了一个文件夹:build-testFFmpeg-Qt_4_8_2_mingw-Debug

打开它,我们天生的exe文件就在build-testFFmpeg-Qt_4_8_2_mingw-Debug/debug/testFFmpeg.exe

直接双击运行看看到底是什么情形。

双击运行之后就有提示了,提示短缺dll文件:

原来忘却把ffmpeg的dll文件放到里面了。

我们刚刚只是下载了Dev包,这里面只有LIB文件,Lib文件是编译连接的时候须要用到的。

而运行的时候须要DLL,因此连续下载FFMPEG的Shared版本

找到2.5的,下载下来。

一定要和刚才下载的版本同等,否则是没法运行的:

解压出 ffmpeg-2.5.2-win32-shared.7z

打开会看到一个bin目录,里面都是dll文件,这些便是运行时须要的动态库,

将这些dll复制到,刚才我们天生exe的目录下(要和exe放在一起)

现在重新打开Qt Creator,运行,这次终于对了,涌现了版本信息:

至此,就成功了引用了FFMPEG了。

标签:

相关文章

QQ伪装黑客代码大全技术与风险警示

网络安全问题日益凸显。QQ作为一种流行的社交工具,成为了黑客攻击的主要目标之一。本文将针对QQ伪装黑客代码大全进行深入剖析,揭示其...

Web前端 2025-03-02 阅读1 评论0