0
点赞
收藏
分享

微信扫一扫

ubuntu环境下ffmpeg 安装 gl-transition

芝婵 2024-02-01 阅读 10

安装环境

  • ubuntu22.04
  • ffmpeg 4.4.4

apt-get update -y

#安装依赖
apt-get -y install gcc g++ make xorg-dev pkg-config \
                       libglew2.2 libglew-dev libglfw3-dev \
                       nasm yasm libx264-dev libx265-dev libvpx-dev libglu1-mesa-dev \
                       libmp3lame-dev libopus-dev libfdk-aac-dev

添加补丁

手动添加补丁,因为apply 报错,猜测是代码太老不兼容了

#下载
git clone https://github.com/transitive-bullshit/ffmpeg-gl-transition.git

git clone https://github.com/FFmpeg/FFmpeg.git -bn4.4.4 

cd FFmpeg
#copy文件
cp ffmpeg-gl-transition/vf_gltransition.c libavfilter/

#修改文件
#在libavfilter/Makefile里加入
OBJS-$(CONFIG_GLTRANSITION_FILTER) += vf_gltransition.o
#在Libavfilter/aLLfiLters.c加入
extern AVFilter ff_vf_gltransition;

是否使用EGL

新的nvidia tool 已经支持egl,可以直接开启EGL编译

#禁用EGL
RUN grep -v "define GL_TRANSITION_USING_EGL" ffmpeg-gl-transition/vf_gltransition.c > ffmpeg/libavfilter/vf_gltransition.c

修改后安装

#开启EGL
./configure --prefix=/usr/local/ --enable-libx264 --enable-libx265 --enable-libvpx  --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-nonfree --enable-gpl --enable-opengl --enable-filter=gltransition --extra-libs='-lGLEW -lEGL -ldl'

#禁用EGL
./configure --prefix=/usr/local/ --enable-libx264 --enable-libx265 --enable-libvpx  --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-nonfree --enable-gpl --enable-opengl --enable-filter=gltransition --extra-libs='-lGLEW -lglfw -ldl'

#编译
make -j
make install

验证

ffmpeg -v 0 -filters|grep gltran
 T.. gltransition      VV->V      OpenGL blend transitions

ffmpeg 6.1 编译

这种报错是在函数所在的c文件中定义了,但是没有在与之相关联的.h文件中声明,需要修改vf_gltransition.c

error: implicit declaration of function ‘ff_get_video_buffer’

添加 #include "video.h"

error: implicit declaration of function ‘ff_set_common_formats’ error: implicit declaration of function ‘ff_make_format_list’

添加 #include "formats.h

error: ‘AVFilter’ has no member named ‘query_formats’

.query_formats = query_formats, 替换为 FILTER_QUERY_FUNC(query_formats)

结论:就算编译正常跑的结果也不正常, 没人更新代码,导致和6.1不兼容

https://github.com/transitive-bullshit/ffmpeg-gl-transition/issues/75

举报

相关推荐

0 条评论