ffmpeg学习之-初步认识及windows环境搭建

ffmpeg学习一:启动篇(学习计划与环境搭建) 其实很久以前就像学习音视频编解码的相关知识了,但总是找不到切入口,不知道从何下手。最近偶尔得知ffmpeg这个开源项目,大为惊喜,想从它切入,学习音视频编解码编程的相关知识。大概浏览了下官网网站后,初步学习路线如下: 熟练使用ffmpeg,ffplay,ffprobe等工具。 对官方例程做深入分析 自己能编程做音视频的编解码工作 会使用ffserver 分析ffserver的工作原理 一.环境搭建u 阅读详情

感兴趣可以加QQ群85486140,大家一起交流相互学习下!

备注:本人用的4.1的版本

1.ffmpeg模块

ffmpeg:FFmpeg全名是Fast Forward MPEG(Moving Picture Experts Group) 快速动态图像专家组.

  • avcodec:最重要的编解码库
  • avformat:封装格式处理
  • avfilter:滤镜效果处理库,想象一下手机上的滤镜模式
  • avdevice: 管理输入输出的通用框架(v4l2)
  • avutil:这个里面包含的常用的公共的库,可以对比Android中的libutil.so。
  • swresample:(software resample)音频重采样库,用于音频的格式转换
  • swscale: 处理图像缩放,颜色空间和图像格式的转换操作。

2.windows环境搭建(VS2010)

2.1 开发包下载

  • 下载开发包
    这里点击下面链接即可跳到windowns下的库的下载 https://ffmpeg.zeranoe.com/builds/ ,注意操作系统的格式。这里我的机器是win64,则选择win64挡。如果是其他操作系统可以在http://www.ffmpeg.org/download.html 中找到其它操作系统对应的开发包。

在这里插入图片描述
紧接着跳转到下面的网页 (https://ffmpeg.zeranoe.com/builds/win64/),下图可以直接点击下载的(v4.1),这里最好把上面三个库都下载下来。

Index of /builds/win64/

File Name ↓ File Size ↓ Date ↓
Parent directory/--
dev/-2019-Feb-24 09:33
shared/-2019-Feb-24 09:32
static/-2019-Feb-24 09:16
  • dev:开发者需要的头文件以及编译链接的库都在这里面,同时要注意这里包含了一些ffmpeg的例子。
  • shared:动态库下载,编译出来的可执行程序(非static),运行时需要动态加载dll库,要不然是运行不起来的。
  • static:编译出来的包含静态库的可执行文件(ffmpeg,ffplay,ffprobe,ffserver),初学者可以根据可执行文件命令行体验一些ffmpeg的功能。(包含了doc文档)。

2.2 vs2010工程创建

在进入vs2010后可以使用(ctrl+shfit+n)快捷键,也可以操作如下:
在这里插入图片描述
点击属性后就不会弹出创建项目的类型,这里新手一般选择win32控制台应用程序。到后面需要图像界面的话可以选择MFC。
在这里插入图片描述

  • 添加include
    这里的需要将刚才下载dev目录下包含的include目录拷贝到工程目录(cpp文件所在的目录),然后手动输入include即可,当然也可以通过点击下标手动选择目录(这个目录就是觉得路径了,工程更换目录就编译不过,一般使用相对路径)
    在这里插入图片描述
  • 添加lib
    通添加头文件一样,这里添加lib库的目录,这里lib的名字就是lib,手动输入lib。以及在链接器->输入tab项。将编译链接需要的库的名称都输入进来。
    -

3. hello world

// ffmpeg_test_pro.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

extern "C"
{
#include "libavcodec/avcodec.h"
#include "include\libavcodec\version.h"
}

int _tmain(int argc, _TCHAR* argv[])
{
	printf("device_version:%d",LIBAVCODEC_VERSION_INT);
	getchar();
	return 0;
}

  • 编译报错1:
    编译后报错了:提示找不到inttypes.h,搜索是由于C99标准支持这个文件,但是一些编译器中不支持,需要手动把文件下载下来才行。

f:\ffmpeg\demo\ffmpeg_test_pro\ffmpeg_test_pro\include\libavutil\common.h(34): fatal error C1083: 无法打开包括文件:“inttypes.h”: No such file or directory

下载inttypes.h,stdint.h头文件即可,下载地址 https://download.youkuaiyun.com/download/armwind/10973359

1>f:\ffmpeg\demo\ffmpeg_test_pro\ffmpeg_test_pro\include\libavutil\common.h(30): fatal error C1189: #error : missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS

  • 编译错误2:
    上面的变异解决后,就报了一个宏没有定义的问题,google了一下,发现了答案。在vs中定义即可。
    解决办法:(https://stackoverflow.com/questions/986426/what-do-stdc-limit-macros-and-stdc-constant-macros-mean)

__STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS are a workaround to allow C++ programs to use stdint.h macros specified in the C99 standard that aren’t in the C++ standard. The macros, such as UINT8_MAX, INT64_MIN, and INT32_C() may be defined already in C++ applications in other ways. To allow the user to decide if they want the macros defined as C99 does, many implementations require that __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS be defined before stdint.h is included.

从上面可以发现,C++编译器如果想使用stdint.h,必须定义该宏。定义的地方在
在这里插入图片描述

  • 运行结果
    在这里插入图片描述
    由此可以将(https://ffmpeg.zeranoe.com/builds/win64/dev/) 下载下来的demo运行一下了。^___^
  • 编译错误3-拓展例程编译报错
    在使用 https://ffmpeg.zeranoe.com/builds/win64/dev/ 例程中的muxing.c(http://ffmpeg.org/doxygen/3.0/muxing_8c_source.html)进行编译时报了下面的错误:

1>f:\ffmpeg\demo\ffmpeg_muxter\ffmpeg_test_pro\include\libavutil\rational.h : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
1>f:\ffmpeg\demo\ffmpeg_muxter\ffmpeg_test_pro\include\libavutil\rational.h : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
1>f:\ffmpeg\demo\ffmpeg_muxter\ffmpeg_test_pro\include\libavutil\rational.h : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
1>f:\ffmpeg\demo\ffmpeg_muxter\ffmpeg_test_pro\include\libavutil\timestamp.h(30): fatal error C1189: #error : missing -D__STDC_FORMAT_MACROS / #define __STDC_FORMAT_MACROS

对应的代码:

#if defined(__cplusplus) && !defined(__STDC_FORMAT_MACROS) && !defined(PRId64)
#error missing -D__STDC_FORMAT_MACROS / #define __STDC_FORMAT_MACROS
#endif

由上面的定义可以看出,当定义了__cpluspus时,且没有定义__STDC_FORMAT_MACROS及PRId64时就报错了。
这里由于问题出现在timestamp.h和判断是否定义PRId64,可以想象的出根时间长度有关。

  • 编译错误4-拓展例程编译报错

1>f:\ffmpeg\demo\ffmpeg_muxter\ffmpeg_test_pro\ffmpeg_test_pro.cpp(81): error C2143: 语法错误 : 缺少“)”(在“{”的前面)
1>f:\ffmpeg\demo\ffmpeg_muxter\ffmpeg_test_pro\ffmpeg_test_pro.cpp(81): error C2059: 语法错误:“)”
1>f:\ffmpeg\demo\ffmpeg_muxter\ffmpeg_test_pro\ffmpeg_test_pro.cpp(81): error C2143: 语法错误 : 缺少“)”(在“{”的前面)
1>f:\ffmpeg\demo\ffmpeg_muxter\ffmpeg_test_pro\ffmpeg_test_pro.cpp(81): error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>f:\ffmpeg\demo\ffmpeg_muxter\ffmpeg_test_pro\ffmpeg_test_pro.cpp(81): error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>f:\ffmpeg\demo\ffmpeg_muxter\ffmpeg_test_pro\ffmpeg_test_pro.cpp(81): error C2143: 语法错误 : 缺少“;”(在“,”的前面)

查看代码在这里

#define av_ts2timestr(ts, tb) av_ts_make_time_string((char[AV_TS_MAX_STRING_SIZE]){0}, ts, tb)
改成
char ts_buf[AV_TS_MAX_STRING_SIZE] = {0};
#define av_ts2timestr(ts, tb) av_ts_make_time_string(ts_buf, ts, tb)

VS2010中的C99不支持这样写,只能在外面重新定义一个缓存区。

FFmpeg第一话:FFmpeg 简介与环境搭建 在当今数字化多媒体蓬勃发展的时代,音频和视频内容充斥着我们生活的方方面面。从在线视频平台的海量影视资源,到社交媒体上的短视频分享,再到各种专业视频制作与编辑工作,多媒体处理技术变得愈发重要。而 FFmpeg 作为一款功能强大且开源的多媒体处理工具库,犹如一把万能钥匙,能够开启多媒体处理的各种可能性。无论是专业的软件开发人员,还是对多媒体处理感兴趣的爱好者,深入学习 FFmpeg 都将为他们在这个领域的探索和创新提供坚实的基础。 阅读详情

相关推荐

ffmpeg builds by zeranoe_手把手搭建FFmpeg的Windows环境

1.简述在Windows平台,搭建FFmpeg开发环境,能够帮助我们做各种开发的测试,如推流,拉流,滤镜等。2.下载源码(1)登陆FFMPEG官网官网地址:http://ffmpeg.org/下载4.2.1版本源码地址:https://ffmpeg.org/releases/ffmpeg-4.2.1.tar.bz2下载4.2.1编译好的文件:https://ffmpeg.zeranoe.com/b...

weixin_39806808的博客 7390

FFmpeg入门教程(非常详细)从零基础入门到精通,看完这一篇就够了。

FFmpeg全称为Fast Forward Moving Picture Experts Group,于2000年诞生,是一款免费,开源的音视频编解码工具及开发套件。它的功能强大,用途广泛,大量用于视频网站和商业软件(比如 Youtube 和 iTunes)。FFmpeg 本身是一个庞大的项目,包含许多组件和库文件,最常用的是它的命令行工具example:对输入视频缩放至320:240:ffmpeg -i input.mpg -vf scale=320:240 output.mp4。

Javachichi的博客 9万+

Qt | Windows环境搭建ffmpeg

直接下载地址:http://iso.mirrors.ustc.edu.cn/qtproject/archive/qt/5.10/5.10.1/qt-opensource-windows-x86-5.10.1.exe。下载地址:http://download.qt.io/official_releases/qt/5.10/5.10.1/源码:https://ffmpeg.org/releases/ffmpeg-4.2.1.tar.bz2。QT官网:https://www.qt.io/

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 1000

FFmpeg学习之 一 (音视频理论知识)

FFmpeg学习之 一 (音视频理论知识)1. 音视频理论知识 1. 音视频理论知识

kyl282889543的博客 9672

全面掌握FFmpeg:FFmpeg最详尽教程解析

本文还有配套的精品资源,点击获取 简介:FFmpeg是一个全面的多媒体处理工具,支持视频和音频的编解码、转换、流化等。本教程深入介绍FFmpeg的核心概念、命令行使用技巧及实际应用案例。涵盖了其主要库的介绍、命令行工具的详细操作、命令行语法和ffdoc文档的详细内容,同时提供了实战应用示例和进阶学习建议。本教程适合从初学者到经验丰富的开发者的全方位学习。 1. F...

weixin_35879493的博客 1万+

FFmpeg在Windows环境下的全面搭建指南

FFmpeg是一个功能强大的多媒体框架,它能够记录、转换以及流化音频和视频数据。作为开源软件,FFmpeg支持几乎所有的音频和视频格式,成为处理媒体文件的重要工具。它提供了一系列命令行工具,用户可以通过命令行执行各种复杂的媒体处理任务。视频内容的最终用途往往需要根据不同的平台和设备要求,自定义视频的分辨率、帧率和比特率。例如,如果你正在准备一个视频用于网页播放,可能需要一个较小的分辨率和较低的比特率以确保更快的加载时间。通过FFmpeg,你可以根据需要自由调整这些参数。

weixin_42620563的博客 1156

FFmpeg深入学习

上文主要讲解了 FFmpeg 相关知识,以及在 Windows 下编译 FFmpeg 源码,本文继续对 FFmpeg 进行更深入的介绍。FFmpeg 常规处理流程大流程可以划分为输入、输出、转码、播放四大块其中转码涉及比较多的处理环节,从图中可以看出,转码功能在整个功能图中占比很大,转码的核心功能在解码和编码两个部分,但在一个可用的示例程序中,编码解码与输入输出是难以分割的。

明天你好的博客 2728

H3C ACL的应用与配置1

SWHC1-acl-ipv4-adv-3000]rule 30 permit ip source 192.168.50.252 0 destination 192.168.70.252 0 //设置一条ID为30的过滤,允许源地址为 192.168.50.252 访问目的地址为192.168.70.252 的设备。高级ACL范围3000-3999:对源IP,目地IP,协议,端口号进行过滤。[SWHC1]acl number 3000 //创建高级ACL 3000。

weixin_41120428的博客 2426

FFmpeg教程(超级详细版)

一、参考资料 通过ffmpeg把图片转换成视频 FFmpeg命令(一)、使用filter_complex命令拼接视频 FFmpeg 视频处理入门教程给新手的 20 多个 FFmpeg 命令示例 FFmpeg命令行转码 ffmpeg 翻译文档 (ffmpeg-all 包含重要组件) FFmpeg Filters Documentation FFmpeg命令行滤镜使用 ffmpeg命令行使用nvidia CUDA scaling高速转分辨率转码(libnpp) FFmpeg—源码编译 FFmpeg常用命令 Li

IT菜鸟 11万+

MTK6769平台Type-C充电全解析:从硬件管脚到PD协议实战(Android15环境)

本文深入解析了MTK6769平台在Android 15环境下Type-C充电的完整链路。从硬件管脚(特别是核心的CC引脚)功能与连接,到USB-PD协议报文抓取与实战分析,并结合MTK平台PD芯片驱动与充电IC驱动的软件框架,提供了从硬件设计到软件调试的系统性解决方案和常见问题排查案例。

ol78901234的博客 312

vuecli3 实现 移动端和pc端 界面切换(两套代码)

适合场景 多页面多系统应用 所有系统都在同一目录下。配置多入口多出口。每个系统之间可以链接。每个系统内依然采用Vue单页应用开发。 产品需求:一套代码 兼容pc端和移动端 , 移动端和pc端的样式布局差别很大,需要使用多界面,并判断使用手机的时候跳转移动端代码,使用pc端跳转pc端代码。 项目目录 分为两部分代码,pc 和mobile 第一步:创建一个登陆页面的文件 在项目public文件夹下创建一个login.html,其实就是将index.html复制一份,将title改一下: <!DOCTYP

你怎么也喜欢嘴巴嘟嘟 5921

【FFmpeg+Qt开发】Windows下 环境搭建 详细步骤

详细介绍ffmpeg相关库文件 以及在qt下的环境配置

持续学习,持续进步! 1万+

OpenWRT端口转发与NAT环回冲突的排查与解决

本文详细解析了OpenWRT路由器中端口转发与NAT环回功能冲突导致的内网访问故障。通过生活化类比阐明两者工作原理,提供从基础诊断到内核参数调整、LuCI选项配置及手动编写iptables规则的多套解决方案,并给出进阶排查思路,帮助用户彻底解决内网无法通过公网地址访问服务的常见问题。

weixin_29243279的博客 507

Windows FFmpeg 开发环境搭建

bin注:(WoW64 (Windows On Windows64 )是⼀个Windows操作系统的⼦系统,被设计⽤来处理许多在32-bit Windows和64-bit Windows之间的不同的问题,使得可以在64-bit Windows中运⾏32-bit程序。

weixin_51332735的博客 2655

Anolis OS 23实战:5分钟搞定AI环境配置(含NVIDIA驱动一键安装)

本文详细介绍了如何在Anolis OS 23上快速配置AI开发环境,包括NVIDIA驱动的一键安装和TensorFlow、PyTorch等AI框架的部署。通过智能硬件适配引擎和优化后的二进制包,用户可在5分钟内完成传统需要数小时的配置工作,显著提升AI项目开发效率。

weixin_30335575的博客 537

OpenAI Codex 桌面端国内使用全坑解決指南(2026 Windows 实测)

本地文件报错:SQLite 初始化失败、启动闪退、卡加载页 → 本地缓存/数据库损坏,和网络无关网络地区报错→ 网络IP/地区被拦截,和本地软件文件无关Codex 桌面端的大部分报错,都不是软件故障,而是海外软件适配国内网络、国内模型协议不兼容导致的适配问题。不用盲目重装、换网络、改系统设置,只要区分「本地文件问题」和「网络地区问题」,搭配国内大模型 API 替代方案,就能完美解决所有痛点。(注:部分内容可能由 AI 生成)

ups_hxc的博客 1127

【FFmpeg】Windows 搭建 FFmpeg 命令行运行环境

一、下载 FFMPEG、 二、拷贝可执行文件、 三、拷贝动态库文件、 四、运行 ffmpeg 命令、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 7654

华为铁三角(AR、SR、FR)的考核指标设计

以和为核心,通过和实现协同。考核维度分为和,并随市场阶段动态调整权重。

从技术实践立足,从项目管理方法论延伸思考 2776

ffmpeg第一弹:ffmpeg介绍和开发环境搭建!

从本篇文章开始,我将开始写一些自己学习音视频方面的学习笔记,记录自己的成长过程!我们先来了解一下ffmpeg是什么吧?最官方的解释和介绍,当然是去ffmpeg官方看,ffmpeg官方地址...

Dada_ping的博客 9606

pikachu靶场: 暴力破解第四关(token防爆破)

Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个 Token 同时将此 Token 返回给客户端。此外,Token 是有时效的,一段时间之后或下一次请求时用户需要重新验证。

X_shiguang的博客 1720

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Windows ffmpeg 环境搭建

解压ffmpeg-4.2.1-win32-shared.zip 打开cmd命令行窗口引用FFMPEG库 下载地址:https://www.msys2.org/ 安装完成之后,先把安装⽬录下的msys2_shell.cmd中注释掉的 rem set MSYS2_PATH_TYPE=inherit 改成 set MSYS2_PATH_TYPE=inherit ,这是为了将vs的环境继 承给MSYS2 注意:是在⽂件夹打开⽂件进⾏编辑,不是在shell窗⼝编辑。 编辑 /etc/pacman.d/mi

weixin_45715405的博客 2685

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ffmpeg入门教程之Windows开发环境搭建

ffmpeg官网文档 About FFmpeg ffmpeg ffplay ffprobe FFmpeg Libraries for developers ffmpeg-API ffmpeg开发环境搭建(Windows) Visual Studio 搭建ffmepg开发环境(Windows) Visual Studio 编写ffmpeg封装格式转换器(无编解码) GitHub:[https://github.com/AnJiaoDe/FFmpegDemoVS](https://github.com/AnJi

奋斗的IT青年 4284

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

在 Rust 中使用 FFmpeg (1):环境搭建

写播放器最快的方式是用各个操作系统平台提供的多媒体组件,一般十几行几十行代码就能搞出一个勉强可用的播放器来,但是要做更深入更强大的功能就难了,如果要做跨平台那更不可能,这时候就需要用到 FFmpeg 了,Rust 也不例外。接下来就让我们的自虐之路从 FFmpeg 开始。

向右走向左走 —— 小时了了的技术博客 2571

ffmpeg学习之环境搭建

clion搭建ffmpeg学习环境

scl8295的博客 1723

FFmpeg音视频处理技术:基于Linux下QT Creator的FFmpeg环境搭建(史上最全)

阅读本文章的小伙伴需要注意,本作者主要是从4个方面进行FFmpeg环境的搭建(完全适应利用常见操作系统平台进行FFmpeg音视频开发),大家根据需要自行选择相应的环境进行搭建:(1)(2)(3)(4)

Mr_zhang1911116的博客 3509

音视频windows环境ffmpeg搭建

1:配置ffmpeg,使window是终端可以识别到ffplay, ffmpeg工具 使用ffplay xxx.mp4 -x 800 -y 400 进行测试 2:把需要的dll文件拷贝到qt的项目库下,编译调试qt可以成功。 可以用ldd命令查看依赖的dll 3:如何配置ffmpeg的dll路径,使qt可以新建项目自动识别到? 4:用动态库的时候,需要相关的dll进行链接才能debug,静态库好像也有个dll? 1:windows下命令行环境搭建 ​ 获取对应的ffmpeg并安装 1:获取ffmpeg

yun6853992的博客 2075
上一篇: 网络-RTSP简单理解
下一篇: ffmpeg学习之-window下编译安装nginx用ffmpeg推抓视频流
armwind
博客等级 码龄12年 406粉丝 152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值