【音视频开发】第二章 FFmpeg 开发环境

【音视频开发】第二章 FFmpeg 开发环境

文章目录

  • [【音视频开发】第二章 FFmpeg 开发环境](#【音视频开发】第二章 FFmpeg 开发环境)
  • [一、Window 安装开发环境](#一、Window 安装开发环境)
    • [1.FFmpeg 命令行环境搭建](#1.FFmpeg 命令行环境搭建)
    • [2.Visual Studio 和 Qt 安装](#2.Visual Studio 和 Qt 安装)
    • [3.CDB 调试器安装](#3.CDB 调试器安装)
    • [4.Windows 编译 FFmpeg](#4.Windows 编译 FFmpeg)
    • 5.编译第三方库
    • [6.Qt 使用 MSVC 调用编译好的 ffmpeg 库](#6.Qt 使用 MSVC 调用编译好的 ffmpeg 库)

一、Window 安装开发环境

1.FFmpeg 命令行环境搭建

FFMPEG 官网:ffmpeg.org

下载以下文件:

源码:ffmpeg-x.x.x.tar.bz2

Shared:ffmpeg-x.x.x-winxx-shared.zip(包含 FFMPEG 的 dll 库文件)

Static:ffmpeg-x.x.x-winxx-static.zip(包含了 FFMPEG 的官方文档)

Dev:ffmpeg-x.x.x-winxx-dev.zip(包含 FFMPEG 的 lib 文件/头文件,以及 example 范例)

拷贝可执行文件到 C://Windows

  • ffmpeg转码
  • ffplay播放器
  • ffprobe分析码流成分

拷⻉动态链接库到C:\Windows\SysWOW64

输⼊ffmpeg -version测试

  • configuration表示开启/关闭了哪些配置

2.Visual Studio 和 Qt 安装

Qt 下载地址:download.qt.io/archive/online_installers

这里下载的是 Qt 的在线安装程序

选择 Qt 版本时,需要注意 Visual Studio 和 Qt 的版本是否兼容

配置 Visual Studio 环境变量

D:\Program Files\VisualStudio\VC\Tools\MSVC\14.43.34808\bin\Hostx64\x64

3.CDB 调试器安装

MSVC 编译器使用 windbg 下的 cdb 调试器,所以需要安装 windbg
https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools

4.Windows 编译 FFmpeg

安装 MSYS2

MSYS2(Minimal System 2)是一个开源的软件发行环境和软件包管理器,主要用于在 Windows 上提供类似于 Unix/Linux 的开发体验。它是基于 Cygwin、MSYS(Minimal SYStem)和 MinGW-w64 项目的改进和扩展。MSYS2 提供了一个类 Unix 环境,以及支持 Windows 原生应用程序构建的工具链。

下载地址:www.msys2.org


安装完成之后,先把安装目录下 msys2_shell.cmd 中的

rem set MYS2_PATH_TYPE=inherit

改成

set MYS2_PATH_TYPE=inherit

这是为了将 VS 的环境继承给 MSYS2

MSYS2 可以选择 msys 或者 MinGW -w64 环境来编译,不过在 msys 下使用 gcc 编译出来的 exe 和 dll 依赖 msys-2.0.dll,而 MinGW -w64 下编译出来的文件不需要依赖这个 dll,从程序的运行效率来看,不依赖这个 dll 的程序的效率更高,所以选择 MinGW -w64 来编译更佳。

修改 pacman 的源

pacman 是一个软件包管理器,用来在 MSYS2 中安装软件,但是默认的国外源,下载安装包时非常慢,所以需要修改为国内源,可以选择中科大的源

编辑 /etc/pacman.d/mirrorlist.mingw32,在文件开头添加

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686/

Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686/

编辑 /etc/pacman.d/mirrorlist.mingw64,在文件开头添加

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64/

Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64/

编辑 /etc/pacman.d/mirrorlist.msys,在文件开头添加

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch/

Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch/

在 MSYS2 安装目录下输入以下命令,分别打开 64 位和 32 位的 shell

然后在 msys2 的 shell 中执行

pacman -Sy

刷新软件包数据

安装编译环境

安装 mingw-w64

打开 MSYS2 MinGW64,在 shell 窗口中输入:

pacman -S mingw-w64-x86_64-toolchain

输入回车默认全部安装

安装 git

pacman -S git

安装 make 等工具

pacman -S make

pacman -S automake

pacman -S autoconf

pacman -S perl

pacman -S libtool

pacman -S mingw-w64-i686-cmake

pacman -S pkg-config

如果需要编译出 ffplayer,还需要安装 SDL

pacman -S mingw-w64-x86_64-SDL2

重命名 link.exe

重命名 msys64/usr/bin/link.exe 为 msys64/usr.bin/link.bak,避免和 MSVC 的 link.exe 冲突

安装 YASM

pacman -S nasm

pacman -S yasm

检查编译环境

which cl link yasm cpp

看返回结果,没有 no 的结果一般就没问题

修改支持中文显示

窗口右键 -> Options -> Text,然后 locale 选择:zh_CN,Character set 选择 UTF-8

5.编译第三方库

下载和编译 x264

www.videolan.org/developers/x264.html

解压到此处

进入 x264 目录

./configure --prefix=/home/${userName}/ffmpeg/build/libx264 --host=x86_64-w64-mingw32 --enable-shared --enable-static --extra-ldflags=-Wl,--output-def=libx264.def

make

make install

生成 libx264.lib

上面编译出来的结果没有包含 lib 文件,需要自己手动生成

cp ./libx264.def /home/${username}/ffmpeg/build/libx264/lib

cd /home/${username}/ffmpeg/build/libx264/lib

lib /machine:X64 /def:libx264.def

如果想在程序中直接使用 x264,将 include 中的 .h 头文件、libx264.lib 和 libx264-165.dll 复制到项目中对应位置,并且在程序中添加头文件

下载和编译 fdk-aac
https://sourceforge.net/projects/opencore-amr/files/fdk-aac

./autogen.sh

./configure --prefix=/home/${username}/ffmpeg/build/libfdk-aac --enable-static --enable-shared

make

make install

下载和编译 mp3
https://sourceforge.net/projects/lame

./configure --prefix=/home/${username}/ffmpeg/build/libmp3lame --disable-shared --disable-frontend --enable-static

make

make install

下载和编译 libvpx
https://github.com/webmproject/libvpx

./configure --prefix=/home/${username}/ffmpeg/build/libvpx --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm

make

make install

下载和编译 ffmpeg
https://gitee.com/mirrors/ffmpeg

./configure --prefix=/home/{username}/ffmpeg/build/ffmpeg --arch=x86_64 --enable-shared --enable-gpl --enable-libfdk-aac --enable-nonfree --enable-libvpx --enable-libx264 --enable-libmp3lame --extra-cflags="-I/home/{username}/ffmpeg/build/libfdk-aac/include" --extra-ldflags="-L/home/{username}/ffmpeg/build/libfdk-aac/lib" --extra-cflags="-I/home/{username}/ffmpeg/build/libvpx/include" --extra-ldflags="-L/home/{username}/ffmpeg/build/libvpx/lib" --extra-cflags="-I/home/{username}/ffmpeg/build/libx264/include" --extra-ldflags="-L/home/{username}/ffmpeg/build/libx264/lib" --extra-cflags="-I/home/{username}/ffmpeg/build/libmp3lame/include" --extra-ldflags="-L/home/${username}/ffmpeg/build/libmp3lame/lib"

make

make install

!注意 pkg-config

6.Qt 使用 MSVC 调用编译好的 ffmpeg 库

相关推荐
微帧Visionular7 小时前
AI视频单帧清晰,播放时却闪烁,原因是什么?
人工智能·深度学习·音视频
辰辰观影9 小时前
Windows网盘视频播放器推荐:无广告4K HDR怎么选
音视频
2601_9668274510 小时前
电视端云盘在线播放怎么选?支持4K HDR的应用推荐
音视频
开开心心就好11 小时前
音频降噪剪辑工具,音量裁剪一键处理
运维·服务器·前端·spring·ocr·音视频·1024程序员节
AI视频工具指南15 小时前
AI视频的声音和画面怎么配合?先分清谁在传递信息
人工智能·aigc·音视频
辰辰观影17 小时前
无广告播放器推荐来啦
音视频
TrueDei17 小时前
GStreamer 使用 valve 分别控制音视频流的暂停与恢复
音视频
一条破秋裤18 小时前
基于 Hi3516CV610 的立定跳远视频测量系统调研与实施方案
arm开发·音视频
2601_9668274519 小时前
视频里的特效字幕怎么翻译?外挂字幕与AI字幕一键处理教程
音视频
八月的雨季 最後的冰吻20 小时前
音视频面试--延迟优化
面试·职场和发展·音视频