FFmpeg编译及调试
阅读量
0
阅读人次
0
编译
Linux
sudo apt install nasm
./configure --prefix=/opt/Libraries/ffmpeg-6.0
make -j6
make install
MSVC
找到 x64 Native Tools Command Prompt for VS 2022 这个命令工具,点击它打开命令行。
为了让 MSYS2 能继承 MSVC 的环境变量,需要修改 D:\msys64\msys2_shell.cmd
中的 rem set MSYS2_PATH_TYPE=inherit
,去掉rem
,取消这⼀句的注释。使MSYS2的环境变量继承当前CMD的窗口的环境变量。
在 x64 Native Tools Command Prompt for VS 2022 命令窗口输入 cd d:\msys64\
先回到 msys64目录。
然后再输入 .\msys2_shell.cmd -ucrt64
,启动 msys2 命令行窗口。在 MSYS2 命令行窗口分别输入 echo $LIB
及which cl.exe
,确认 msys2 命令行窗口 是否已经继承了 MSVC 的 lib 环境变量,以及确认一下 cl.exe 是在MSVC的目录下,同时看下 cl.exe 的目录是否有 link.exe。
安装MSYS2所需软件:
pacman -S diffutils make pkg-config yasm
下载SDL2,在目录下新建sdl2.pc文件,内容如下:
# sdl pkg-config source file
prefix=/e/Projects/Libraries/SDL2-2.28.4_msvc
exec_prefix=${prefix}
libdir=${prefix}/lib/x64
includedir=${prefix}/include
Name: sdl2
Description: Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer.
Version: 2.28.4
Requires:
Conflicts:
Libs: -L${libdir} -lSDL2
Cflags: -I${includedir}
导入SDL2至 pkg-config:
export PKG_CONFIG_PATH=/e/Projects/Libraries/SDL2-2.28.4_msvc:$PKG_CONFIG_PATH
进入FFmpeg源码目录,执行configure:
执行configure可能会等待很久才输出结果。
在make之前,注意config.h文件的编码,最好转换为UTF-8 with BOM,否则有可能会出现
E:\Projects\ffmpeg-6.0\config.h(1): warning C4828: 文件包含在偏移 0x232 处开始的字符,该字符在当前源字符集中无效(代码页 65001)。
的错误导致编译失败。
./configure \
--prefix=/e/Projects/ffmpeg-7.0_msvc2022_64bit \
--enable-gpl \
--enable-nonfree \
--enable-shared \
--enable-sdl2 \
--disable-optimizations \
--disable-asm \
--disable-stripping \
--toolchain=msvc
make -j8
make install # 要执行 make install
NDK
安装MSYS2。
# 安装编译相关工具
pacman -S diffutils make
COMPILER_ROOT=D:/Android/Sdk/ndk/25.1.8937393/toolchains/llvm/prebuilt/windows-x86_64
./configure --prefix=D:/Android/ffmpeg-6.0 \
--cross-prefix=${COMPILER_ROOT}/bin/aarch64-linux-android30- \
--ld=${COMPILER_ROOT}/bin/aarch64-linux-android30-clang \
--nm=${COMPILER_ROOT}/bin/llvm-nm.exe \
--strip=${COMPILER_ROOT}/bin/llvm-strip.exe \
--disable-doc --disable-vulkan \
--disable-static --enable-shared --arch=aarch64 --enable-cross-compile \
--target-os=android --disable-programs
make -j6
make install
使用 VS Code 调试
使用 VS Code 打开源码目录,在FFmpeg源码目录下新建.vscode\launch.json
文件:
{
"version": "0.2.0",
"configurations": [
{
"name": "ffplay调试",
"type": "cppvsdbg",
"request": "launch",
"program": "E:/Projects/ffmpeg-6.0_msvc2022_64bit/bin/ffplay.exe",
"cwd": "E:/",
"args": [
"E:/01.mp4"
]
}
]
}
即可调试。