【音视频开发】第二章 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 库

相关推荐
鹅毛在路上了6 小时前
vlc录制的视频伪时长修复方法
ffmpeg·音视频
EasyCVR10 小时前
基于WebRTC与P2P技术,嵌入式视频通话EasyRTC实现智能硬件音视频交互,适配Linux、ARM、RTOS、LiteOS
人工智能·音视频·webrtc·h.265·智能硬件
智联视频超融合平台10 小时前
H.264视频编解码:从原理到应用
网络·人工智能·音视频·视频编解码·h.264
gma99920 小时前
【音视频】H265-NALU-AVpacket-PS-RTP(GB28181)
音视频
小白学大数据1 天前
Python爬虫:从人民网提取视频链接的完整指南
大数据·开发语言·爬虫·python·音视频
智联视频超融合平台1 天前
网络视频监控平台在医疗领域的应用
网络·人工智能·音视频·健康医疗·视频编解码
EasyCVR2 天前
基于WebRTC技术的EasyRTC嵌入式音视频SDK:多平台兼容与性能优化
性能优化·音视频·webrtc
码农客栈2 天前
qt+opengl 播放yuv视频
qt·音视频
群联云防护小杜2 天前
源IP泄露后如何涅槃重生?高可用架构与自动化防御体系设计
人工智能·物联网·tcp/ip·架构·自动化·音视频