之前用FFmpeg的情形一般是 FFMpeg 拉RTSP流 解封装,然后将读出来的packet数据交给硬件去做解码编码,现在出现了一个新的轻装要求支持FFMeg软解。
即利用FFMpeg来解码 编码,然后FFMpeg默认的解码器是不包含H264 H265的,需要先下载libX264 编译出来库 ,然后编译FFMpeg的时候 大概lib264的开关 这里记录下
首先下载lib264
下载下来之后 放到msys2的目录下
通过vs 的prompt打开msys2 export一下 各位替换成自己的目录就可以
export PATH="/c/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.30.30705/bin/Hostx64/x64":$PATH
然后需要安装一些工具
pacman -Syu
pacman -S make
pacman -S diffutils
pacman -S yasm
pacman -S nasm
然后 新建一个build.sh 内容如下
OPTIONS="--enable-shared"
CC=cl ./configure $OPTIONS --enable-shared --prefix=$BUILD_DIR/install
保存 执行一下 ./build.sh 如果没错误 就会产生makefile 有错的话会提示
然后 make make install 就可以
需要的文件 就 出来了
接下来需要编译FFMpeg 打开lib264的开关 FFMpeg的 配置文件如下 记得把那个libx264.dll.lib改成libx264.lib
X264_INCLUDE=/install/include
X264_LIB=/install/lib
./configure --prefix=./output \
--enable-x86asm \
--arch=x86_64 \
--toolchain=msvc \
--enable-static \
--enable-shared \
--enable-w32threads \
--disable-doc \
--enable-libx264 \
--enable-gpl \
--enable-optimizations \
--extra-cflags="-I$X264_INCLUDE" \
--extra-ldflags="-LIBPATH:$X264_LIB"
然后 make make install 就可以了
之前如果转码 这么写的话 会提示如下错误
ffmpeg -i middle.mp4 -c:v libx264 -movflags faststart -b 600k -r 25 -s 640*360 -ab 48k -strict -2 test_C4.mp4
之前 ffmpeg转码的时候指定 H264会提示 找不到libx264
重新编译好之后 再敲这个命令 就不会提示正常工作了
需要把libx264-164.dll 放到ffmpeg 同目录下 之后 正常开发的时候 也需要这个dll