# 交叉编译FFmpeg-avs2-avs3_可下载EXE Cross-compiling ffmpeg with AVS2 and AVS3 enabled **Repository Path**: wwwlib/ffmpeg-windows-build-helpers-AVS2 ## Basic Information - **Project Name**: 交叉编译FFmpeg-avs2-avs3_可下载EXE Cross-compiling ffmpeg with AVS2 and AVS3 enabled - **Description**: ffmpeg启用国标AVS/AVS2/AVS3 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2021-10-20 - **Last Updated**: 2024-04-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

ffmpeg启用国标AVS2及AVS3编码

下载Windows_X64运行文件:

(https://gitee.com/zhengtianbo/ffmpeg-windows-build-helpers-AVS2/releases)

AVS2与libx265转码mp4对比测试


前提:相同视频,现有源码,ffmpeg缺省参数,即: ffmpeg -i x.mp4 -vcodec avs2 x_avs2.mkv ffmpeg -i x.mp4 -vcodec libx265 x_x265.mkv 速度:本人机器上AVS2远超libx265,是其近3.5倍。
文件:AVS2比libx265至少小近10%。
画质:主观评价两者画质相近。
参数speed_level调整画质: ``` ffmpeg -i 篮球测试视频一.mp4 -vcodec avs2 -speed_level 4 -acodec copy 篮球测试视频一_AVS2.mkv ``` speed_level越大画质越高但编码越慢.

自建ffmpeg步骤:

若已有ubuntu Linux,跳过前两步。
1. 在Windows 10启用Linux子系统,从微软商店搜索并安装ubuntu。
2. 在Windows运行ubuntu,设置Linu用户及口令。
4. 复制编译批文件到本地。
$ git clone https://gitee.com/zhengtianbo/ffmpeg-windows-build-helpers-AVS2.git 5. 编译ffmpeg。
$ sudo bash -c 'echo 0 > /proc/sys/fs/binfmt_misc/WSLInterop' $ cd ffmpeg-windows-build-helpers $ ./cross_compile_ffmpeg_u.sh 选3即Win64 (64-bit only).
若缺文件如编译工具,先按提示安装所需文件,如sudo apt update等等,再试。
注意:需重复多次运行cross_compile_ffmpeg_u.sh 若编译libsndfile出错,先试如下命令: $ sudo dpkg -r --force-depends "libgc1c2" # remove old libgc $ git clone git://github.com/ivmai/bdwgc.git $ cd bdwgc $ ./autogen.sh $ ./configure --prefix=/usr && make -j # its default is the wrong directory? huh? $ sudo make install

切换ffmpeg版本

库中脚本cross_compile_ffmpeg_u.sh所用ffmpeg版本为f901d75bf18c866933f90c052fb990736aee7c47, 匹配补丁文件Updatedavs2andaddedavs3codecs-f901d75bf18c866933f90c052fb990736aee7c47.patch. 若要用其他ffmpeg版本, 参考以下步骤:
1 同时修改cross_compile_ffmpeg_u.sh中的build_ffmpeg(), 如下: ``` build_ffmpeg() { ...... #TODO allow using local source directory if [[ -z $ffmpeg_source_dir ]]; then #Offical do_git_checkout $ffmpeg_git_checkout $output_dir $ffmpeg_git_checkout_version || exit 1 #开启此句,下载最新版 #For AVS2+AVS3 ffmpeg:533d6030ca3e64c87aeb9d04917b716aa8341385 match the patch file (533d603_avs2-avs3.patch) #do_git_checkout $ffmpeg_git_checkout $output_dir 533d6030ca3e64c87aeb9d04917b716aa8341385 || exit 1 #屏蔽AVS2/AVS3补丁对应版本 else output_dir="${ffmpeg_source_dir}" postpend_prefix="${output_dir}" fi if [[ $1 == "shared" ]]; then postpend_configure_opts="--enable-shared --disable-static --prefix=${postpend_prefix}" else postpend_configure_opts="--enable-static --disable-shared --prefix=${postpend_prefix}" fi cd $output_dir #apply_patch file://$patch_dir/frei0r_load-shared-libraries-dynamically.diff #For AVS2+AVS3 ffmpeg:533d6030ca3e64c87aeb9d04917b716aa8341385 #git apply $patch_dir/ffmpeg-533d603_avs2-avs3.patch #屏蔽AVS2/AVS3补丁 ....... ``` 即屏蔽下载ffmpeg版本533d6030ca3e64c87aeb9d04917b716aa8341385及使用补丁的两句, 开启最新ffmpeg版本下载. 2 参照该补丁文件Updatedavs2andaddedavs3codecs-f901d75bf18c866933f90c052fb990736aee7c47.patch自行逐个修改和增加源文件. 也可开启以上提到的"git apply"补丁语句后运行cross_compile_ffmpeg_u.sh, 记下不成功文件再手工修改. 也可使用已合并源码.下载: [已合并AVS2及AVS3的ffmpeg源码](https://gitee.com/zhengtianbo/ffmpeg-windows-build-helpers-AVS2/releases), 展开至某目录如ffmpeg-windows-build-helpers/sandbox/win64/ffmpeg_git_shared 在cross_compile_ffmpeg_u.sh设定ffmpeg_source_dir=$(pwd)/sandbox/win64/ffmpeg_git_shared 可能cross_compile_ffmpeg_u.sh及源文件还有一些地方需要调整, 如注释下载ffmpeg的语句和头文件目录等等.

更新AVS2/AVS3接口文件


AVS2接口文件来源:目前ffmpeg包含avs2接口文件, 新版在https://gitee.com/pkuvcl/FFmpegAVS2/tree/4.0_avs2_test/.
AVS3接口文件来源:目前ffmpeg无avs3接口文件, 来源https://github.com/uavs3/uavs3e_ffmpeg_interface.