前言
本来想省略前言,但最后觉得少了点什么,现在加上了。 可以算是ffmpeg开源系列博客的开始。
由于最近还在纠结ffmpeg项目,所以就萌生了记录一下使用ffmpeg的过程的想法。 由于ffmpeg非常大,有时可能只使用单个模块。 例如,作者经常使用ffmpeg进行拉取。 使用 webrtc 进行流式传输和播放。 所以想整理一下ffmpeg的整个模块或者大部分模块。 也算是开始录制这个系列的初衷。
以下内容由作者亲自操作,请放心食用。
1.ffmpeg简介
FFmpeg 是领先的多媒体框架模块源码如何编译,能够解码、编码、转码、复用、解复用、流式传输、过滤和播放人类和机器创建的几乎任何内容。 它支持最晦涩的古老格式,甚至是最前沿的格式。 它们是否是由某个标准委员会、社区或公司设计的。 它还具有高度可移植性:FFmpeg 在 Linux、Mac OSX、Microsoft Windows、BSD、Solaris 等各种构建环境、机器架构和配置中编译、运行并通过我们的测试基础设施 FATE。
上面这段话翻译自ffmpeg网站
1.ffmpeg网站
官网地址:FFmpeg
API套接字文档地址:FFmpeg:MainPage
git地址:
官网编译工具连接地址:
官方编译文档:官方编译文档
2.ffmpeg模块介绍
ffmpeg 包括可供应用程序使用的 libavcodec、libavutil、libavformat、libavfilter、libavdevice、libswscale 和 libswresample 模块。 并且提供了ffmpeg、ffplay和ffprobe工具供最终用户转码和播放。
其中,各模块的作用如下
2. 使用示例 1. 下载工具
步骤进入官网编译库连接地址:
下载并解压后是
这三个工具的功能如下:
本文仅介绍ffplay进行demo播放,其他工具的使用将在博客其余部分展示
2.ffplay
使用ffplay播放本地mp3模块源码如何编译,播放音视频的基本命令是:
可以看到它包含了文件宽度、音频编码格式、帧率等信息。 其实可以选择远程实时流地址,通过rtsp、rtmp、http等合约拉取播放,播放MP4。 这里我就不过多演示了。 。
3.基本播放命令介绍
播放控制:
音量控制:
3、源码编译
登录官网编译库连接地址,自行下载。 您也可以下载源代码并自行编译。 编译工具可以是MinGW或者cygwin,但是作者推荐安装msys,这是专门为编译ffmpeg而设计的工具。
1.git下载源码
git下载命令
git 克隆 git.ffmpeg.org git-ffmpeg.git/summary
您也可以通过官网下载zip包
2.编译工具介绍
由于最终编译仍然依赖MinGW等一些库,因此需要在Windows上模拟Linux编译环境。 工具有很多,比如Cygwin、MinGW等工具,最终目的都是为了搭建Linux编译环境。
这个链接是官方编译文档:官方编译文档介绍了多种编译形式。 本文使用MSYS2,MSYS2官网,因为MSYS2官网介绍了很多编译ffmpeg的工具。
使用MSYS2自动构建FFmpeg和其他媒体相关工具
3.MSYS2安装
根据编译文档的介绍,需要进行以下操作
从安装路径打开
按顺序输入命令
此时检查msys64mingw64bin路径下是否已经下载了MinGw
如上图所示,此时编译工具已经安装完毕
注意:需要检查系统环境变量中是否存在以下路径
4.编译
以下每个步骤都需要较长时间,请耐心等待
指定编译选项
以管理员模式打开mingw64.exe,进入ffmpeg路径,输入以下命令
./configure --enable-shared --enable-debug --prefix=../ffmpeg_build --extra-cflags="-I../source/ffmpeg_build/include" --extra-ldflags="-LIBPATH:../source/ffmpeg_buid/lib"
对上述命令的介绍:
./configure:执行当前目录下的脚本文件configure,即ffmpeg文件夹。 打开configure文件,会看到一些ffmpeg常用的编译命令的注释,比如–enable-shared等。
--enable-shared:编译成动态链接库(dll)。
--enable-debug:允许调试 ffmpeg 源代码。
--prefix=../ffmpeg_build:指定编译结果的存储路径为.../ffmpeg_build。 这里是相对路径。
--extra-cflags="-I../source/ffmpeg_build/include": cflags 代表 C 编译器的选项。 -I 表示将dir目录添加到头文件的搜索路径列表中。 这里的dir目录指定为.../ffmpeg_build,也写成相对路径。
--extra-ldflags="-LIBPATH:.../source/ffmpeg_buid/lib":ldflags设置gcc等编译器使用的一些优化参数,也可以指定上面的库文件的位置。 -LIBPATH:也可以简写为-L,后面跟库文件的目录。
输入编译命令
make-j4&&makeinstall
上图是编译后的图片
现在就可以查看编译后的文件了
找到步骤1中指定的生成路径,现在可以发现所有的库和头文件都已经生成了,如右图所示。
5. 小贴士
如果不想生成exe,可以禁用它,这样可以节省一些时间
/configure--toolchain=msvc--disable-ffplay--disable-ffmpeg--disable-ffprobe--disable-static--disable-debug--enable-asm--enable-version3--enable-shared
总结
以上就是开发环境的搭建,包括对ffmpeg的理解以及如何初步使用。 最重要的是我们开发者如何编译生成动态库的过程。
如果对您有帮助,请帮忙点个赞!
原创开源ffmpeg(一)--介绍、演示与编译(windows)_ffmpeg编译_山河君的博客-CSDN博客
★文末名片可免费发放音视频开发学习资料,包括(FFmpeg、webRTC、rtmp、hls、rtsp、ffplay、srs)以及音视频学习路线图等。
见下文!