基于WSL用MSVC编译ffmpeg7.1

在windows平台编译FFmpeg,网上的大部分资料都是推荐用msys2+mingw进行编译。在win10平台,我们可以采用另一种方式,即wsl+msvc 实现window平台的ffmpeg编译。

下面将以vs2022+ubuntu22.04 为例,介绍此方法

0、前期准备

  • 安装vs2022 (根据自己喜好,也可以安装其他版本的vs)

  • 安装wsl 及 linux子系统 (我选用了ubuntu22.04,可以根据喜好安装其他linux版本)

  • 下载ffmpeg代码 : 下载自己需要的ffmpeg版本的代码。 我选择了最新版本v7.1.1

  • 编译ffmpeg编译脚本: ffmpeg 的configure命令参数较多,可以提前编译脚本sh脚本,避免在命令行手动输入。

    bash 复制代码
    #!/bin/bash
    
    ARCH=x86_64
    
    PREFIX=$(pwd)/win/x64
    
    function build_android
    {
    
    ./configure \
    --prefix=$PREFIX \
    --enable-shared \
    --disable-static \
    --disable-debug \
    --disable-x86asm \
    --enable-gpl   \
    --enable-small \
    --enable-neon  \
    --enable-d3d12va \
    --enable-dxva2 \
    --disable-postproc \
    --disable-doc \
    --disable-avdevice \
    --disable-symver \
    --disable-outdevs \
    --disable-indevs  \
    --disable-vulkan \
    --arch=$ARCH \
    --toolchain=msvc
    
    make clean
    
    echo "============================ configure android windows x64 success =========================="
    
    }
    
    build_android

1、 准备编译环境

1.1 通过命令行方式进入 msvc编译环境。我选择了 x64 版本编译

启动后可以看到, msvc的编译路径已经添加到path中。

1.2 在msvc编译环境中启动wsl,此操作可以避免在linux系统中手动搭建msvc编译链。

wsl启动后,可以看到msvc的编译路径已经包含到ubuntu系统的path中。

2、运行编译脚本,编译ffmpeg

如上图,执行make -j xx 编译ffmpeg。执行make命令时,由于编码差异可能会出现乱码,

可以重复步骤1重新打开一个wsl窗口,然后执行make -j xx,则可以正常显示中文。

出现上述错误的原因是因为msvc的中文输出编码为GB2312, linux中编译环境中编码为UTF8,将fftools/opt_common.c用gb2312打开后,用utf8重新保存即可。

3、执行make install 将ffmpeg安装到指定目录。 (如脚本中PREFIX指定的目录)

相关推荐
John_ToDebug4 小时前
隐于无形,触手可及:Chrome 互动滚动条的六个设计密码
chrome·windows·ui
思茂信息5 小时前
CST软件如何进行参数化扫描?
运维·开发语言·javascript·windows·ecmascript·软件工程·软件需求
开发者联盟league7 小时前
在windows上安装和运行rocketmq
windows·rocketmq
非凡ghost9 小时前
可拓浏览器:给手机浏览器装上“外挂“!2W+拓展+AI搜索,玩出无限可能!
windows·智能手机·音视频·firefox
小神.Chen10 小时前
如何删除远程桌面的连接记录,一键清理mstsc远程桌面连接的记录
windows
John_ToDebug10 小时前
WebHostView 与 TabStrip 交互机制深度解析
c++·chrome·windows
L16247611 小时前
Win11 共享→Windows Server 访问故障总结(极简可复用)
开发语言·windows·php
love530love11 小时前
ComfyUI MediaPipe 终极填坑:解决 incompatible function arguments 报错,基于代理模式的猴子补丁升级版
人工智能·windows·comfyui·mediapipe·猴子补丁·monkey patch·python 3.12
今夕资源网12 小时前
Windows Terminal更舒适的命令行环境 仅11MB 支持并行运行WSLLinux子系统 github开源项目
windows·github·命令行·cmd·terminal
java_logo13 小时前
SiYuan 思源笔记 Docker 部署终极指南:Windows+Linux 双平台
windows·笔记·docker·思源笔记·思源笔记部署·docker部署思源笔记·思源笔记文档