使用msvc 编译 ffmpeg 1.1

本文介绍如何配置多媒体编解码开发环境,包括安装CMake、Perl、Python等工具,以及设置MSinttypes、Yasm、Llvm+clang等组件,并在MinGW环境下编译C99-to-C89 Converter&Wrapper工具和FFmpeg-1.1项目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Cmake
版本2.8.10.2
http://www.cmake.org/
http://www.cmake.org/cmake/resources/software.html

Perl(非必须)
http://www.perl.org/
ActivePerl版本5.16.1.1601,有64位版,这里用32位版
这里使用的是ActivePerl,IPP的例子编译的时候要用到
http://www.activestate.com/
Download the Free Community Edition
http://www.activestate.com/activeperl/downloads

Python
http://www.python.org/
ActivePython版本2.7.2.5,有64位版,这里用32位版,不要用3.X版本的
这里使用的是ActivePython
Download the Free Community Edition
http://www.activestate.com/activepython/downloads

上面三个软件要在PATH环境变量中,分别在命令行使用cmake、perl、python测试


Msinttypes
http://code.google.com/p/msinttypes/
解压stdint.h和inttypes.h复制到vs2008的vc的include目录,
inttypes.h复制到vs2010的vc的include目录

Yasm
http://yasm.tortall.net/
http://yasm.tortall.net/Download.html
?Win32 VS2010 .zip (for use with VS2010 on 32-bit Windows)
?Win64 VS2010 .zip (for use with VS2010 on 64-bit Windows)
?Win32 .exe (for general use on 32-bit Windows)
?Win64 .exe (for general use on 64-bit Windows)
4个版本都下,这里统一用32位版本,vs2010版本改名为yasm.exe放到vs2010的vc的bin目录,非vs2010版本也是改名yasm.exe分别放到vs2008的vc的bin目录和MinGW的bin目录

Nasm(非必须)
http://www.nasm.us/
这个是非必须的,下载个最新版本放到MinGW的bin目录

Llvm+clang
版本3.2
http://llvm.org/
http://llvm.org/releases/
下载LLVM source code和Clang source code
为了简单起见在MinGW的home目录编译llvm和clang,新建llvm-3.2.src目录,在下面家里llvm和build文件夹,将LLVM source code整个解压到llvm中,在llvm的tools目录中新建clang目录,将Clang source code整个解压到clang目录中
进入cmd命令行,进入build目录,执行命令:
Cmake -G "Visual Studio 9 2008" ../llvm
也可以用Cmake_gui修改,这样就生成了vs2008的sln文件
编译其中的libclang的release版本出来,
复制build\lib\Release目录下的libclang.lib到llvm\lib\Release目录
复制build\bin\Release目录下的libclang.dll到MinGW的bin目录


C99-to-C89 Converter & Wrapper
https://github.com/libav/c99-to-c89/
在MinGW下编译,依赖libclang库,修改Makefile.w32的CLANGDIR=../llvm-3.2.src/llvm
进入vs2008环境变量的MinGW使用Make -f Makefile.w32编译
将生成的c99conv.exe和c99wrap.exe放到MinGW的bin目录

Ffmpeg-1.1
http://ffmpeg.org/platform.html
使用vs2010环境的变量的MinGW,临时删除msys的Bin目录下的link.exe
./configure --toolchain=msvc
make
make install

 

这样默认是生成了a库,引入到vc工程中就可以进行源码级调试了,效率受不受影响还不知道。

 

### 如何使用 MSVC 编译 FFmpeg 为了成功使用 Microsoft Visual Studio Compiler (MSVC) 来编译 FFmpeg,以下是详细的说明: #### 准备环境 在开始之前,需要确保已安装必要的开发工具和依赖项。具体操作如下: - 安装并配置 MSYS2 工具链,通过运行命令 `pacman -S diffutils make pkg-config yasm` 可以获取所需的构建工具[^2]。 - 如果尚未克隆 FFmpeg 源码,则可以通过 Git 命令将其拉取到本地目录(例如 F:\ffmpeg),执行以下命令完成源码下载: ```bash git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg ``` #### 配置与编译过程 进入 FFmpeg 的源码根目录之后,需调用其内置脚本 configure 并指定目标平台以及使用编译器为 MSVC。此过程中可能涉及一些特定参数设置以便适配 Windows 环境下的需求。 对于采用 MSVC 进行交叉编译的情况,官方文档指出应特别注意避免误用 GCC 工具链,因为后者无法生成带有调试信息(PDB 文件)的动态链接库(DLL)[^3]。因此,在实际操作时要明确告知 Configure 脚本选用 cl.exe 作为主要编译驱动程序之一。 典型情况下,可尝试输入类似下面这样的指令来进行初步配置: ```bash ./configure --toolchain=msvc --arch=x86_64 --target-os=win32 ... ``` 这里省略号代表更多个性化定制选项,请参照官方手册中的 `-help` 输出了解全部可用开关及其含义[^4]。 接着就是常规 Make 流程了——即依次执行 `nmake`, 和如果必要的话测试套件验证:`nmake test`. 值得注意的是, 不同版本之间可能存在细微差异; 特定于某个发行版如 v7.1 上的操作指南可能会有所调整 [^5]. 所以始终建议参考对应分支最新的 README 文档或者在线资源. --- ### 提供一段简单的 Python 调用示例代码 假设已经完成了上述步骤并且获得了预构建好的共享对象形式的媒体处理引擎实例化接口函数集合体(.so/.dll),那么就可以轻松集成至其他高级语言项目里去啦! 下面给出了一段利用 subprocess 库间接调用外部二进制文件实现基本功能演示的小例子: ```python import subprocess def run_ffmpeg(input_file, output_file): command = [ 'ffmpeg', '-i', input_file, '-c:v', 'libx264', '-preset', 'ultrafast', output_file ] result = subprocess.run(command, capture_output=True) if result.returncode != 0: raise Exception(f"Error occurred: {result.stderr.decode()}") if __name__ == "__main__": try: run_ffmpeg('input.mp4', 'output.avi') print("Conversion successful!") except Exception as e: print(e) ``` 以上片段展示了如何借助标准库封装后的 API 接口快速搭建起简易音视频转换服务端点原型设计思路框架图谱结构模型概念等等... ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值