ffmpeg-4.0.2版本中ffplay播放器在vs2013下的编译

2024-06-16 00:08

本文主要是介绍ffmpeg-4.0.2版本中ffplay播放器在vs2013下的编译,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

相信很多想要学习播放器开发的小伙伴都知道ffplay,但是却不知道如何在vs2013下去编译,虽然网上已经有了一些教程,但是都不完整,或者ffmpeg的版本太老,所以就有了今天这篇文章。

好了,废话少说,直接上干货。

第一步下载ffmpeg源码,下载地址http://ffmpeg.org/download.html,具体界面如下:

第2步,下载ffmpeg的二进制版本,有些小伙伴可能会问为什么还要下载二进制,直接编译源代码不可以吗,当然可以,如果你不怕麻烦,你怎么都可以,但是我教你的方法是简单有效的方法,要不要学,嘿嘿。

输入如下网址:https://ffmpeg.zeranoe.com/builds/

界面如下:

然后下载win32下的Shared和Dev两个版本,就可以,win64同理,所以,我们这里以win32为例。下载完成后,按照下面的方式重新组织你的ffmpeg文件,具体如下:

在我这里有两个版本,x86代表32位,把所有的头文件放入include,lib和exe文件放入lib目录,bin目录你们可以不要。

第3步下载SDL库,我们这里也是用最新的版本SDL2-2.0.8,输入网址:http://www.libsdl.org/download-2.0.php

具体界面如下:

我们下载32位windows版本就可以,然后分别按照include和lib目录组织好自己的文件。

第4步,我们开始建立一个vs2013控制台工程,如下:

点击完成,如下:

好了,现在我们已经创建了一个vs2013控制台工程,但是现在没有任何文件,现在我们开始为它添加需要的文件,具体如下:

1)将ffmpeg-4.0.2\ffmpeg-4.0.2\fftools下的三个文件拷贝到自己的工程,三个文件如下:

cmdutils.h

cmdutils.c

ffplay.c

2) 将ffmpeg-4.0.2\ffmpeg-4.0.2\compat\avisynth\avs下的config.h文件拷贝到自己的工程

工程目录文件如下:

将所有文件添加到项目中,具体如下:

右键项目名称,添加-现有项,然后选择我们拷贝的4个源文件,效果如下:

3)配置我们的工程中的include目录,lib目录

include目录添加两个新项

D:\ffmpeg\x86\include

D:\SDL2-2.0.8\include

lib目录同样添加两个新项

D:\ffmpeg\x86\lib

D:\SDL2-2.0.8\lib\x86

然后配置依赖项,添加lib如下:

swscale.lib
swresample.lib
postproc.lib
avutil.lib
avformat.lib
avfilter.lib
avdevice.lib
avcodec.lib
SDL2.lib
SDL2main.lib

好了现在配置完成,下面,我们开始编译。

4)编译项目,错误具体如下:

只需要注释掉这行代码,就可以,同时也要注释掉另外两行代码,具体如下:

//#include "compat/va_copy.h"

//#include "libavresample/avresample.h"

//#include "libavutil/libm.h"

5)再次编译,具体如下:

处理方法:

注释掉print_program_info和print_all_libs_info内部的所有代码,具体如下:

6)再次编译,具体如下:

处理方法:

注释掉print_buildconf内部所有的代码,具体如下:

7)再次编译,具体如下:

处理方法:

在C++预处理其中,添加 _CRT_SECURE_NO_WARNINGS,具体如下:

8)再次编译,具体如下:

处理方法:

屏蔽SDL检测,具体如下:

将SDL检测改为否,就可以。

9)再次编译,具体如下:

处理方法:

在config.h中添加如下代码:

#define FFMPEG_DATADIR "D:\\ffmpeg-4.0.2\\ffmpeg-4.0.2"

注意:

D:\\ffmpeg-4.0.2\\ffmpeg-4.0.2是下面的源码目录,不是编译好的ffmpeg目录,目录内容具体如下:

10) 再次编译,具体如下:

处理方法:

在cmdutils.c中添加如下代码:

#define snprintf _snprintf

11)再次编译,具体如下:

到此,编译已经完成,然后只需要将相应的ffmpeg和SDL的相关DLL拷贝到exe所在目录即可,具体如下:

12)测试ffplay-vs.exe

首先打开cmd,并进入到ffplay-vs.exe所在目录,具体如下:

运行程序如下:

ffplay-vs.exe D:\d.mp4

运行效果如下:

到此,全部完成,是不是很简单,各位小伙伴,自己动手试试。

这篇关于ffmpeg-4.0.2版本中ffplay播放器在vs2013下的编译的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1064965

相关文章

IDEA如何切换数据库版本mysql5或mysql8

《IDEA如何切换数据库版本mysql5或mysql8》本文介绍了如何将IntelliJIDEA从MySQL5切换到MySQL8的详细步骤,包括下载MySQL8、安装、配置、停止旧服务、启动新服务以及... 目录问题描述解决方案第一步第二步第三步第四步第五步总结问题描述最近想开发一个新应用,想使用mysq

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Debian如何查看系统版本? 7种轻松查看Debian版本信息的实用方法

《Debian如何查看系统版本?7种轻松查看Debian版本信息的实用方法》Debian是一个广泛使用的Linux发行版,用户有时需要查看其版本信息以进行系统管理、故障排除或兼容性检查,在Debia... 作为最受欢迎的 linux 发行版之一,Debian 的版本信息在日常使用和系统维护中起着至关重要的作

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O

什么是 Ubuntu LTS?Ubuntu LTS和普通版本区别对比

《什么是UbuntuLTS?UbuntuLTS和普通版本区别对比》UbuntuLTS是Ubuntu操作系统的一个特殊版本,旨在提供更长时间的支持和稳定性,与常规的Ubuntu版本相比,LTS版... 如果你正打算安装 Ubuntu 系统,可能会被「LTS 版本」和「普通版本」给搞得一头雾水吧?尤其是对于刚入

windows端python版本管理工具pyenv-win安装使用

《windows端python版本管理工具pyenv-win安装使用》:本文主要介绍如何通过git方式下载和配置pyenv-win,包括下载、克隆仓库、配置环境变量等步骤,同时还详细介绍了如何使用... 目录pyenv-win 下载配置环境变量使用 pyenv-win 管理 python 版本一、安装 和

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显