我正在尝试让 ffmpeg 使用 frei0r 插件,尽管我能够让 frei0r 出现在过滤器列表中,但我收到了错误:
[frei0r @ 0x10331c1c0] Could not find module 'glow'
Error initializing filter 'frei0r' with args 'glow:0.5'
我使用 homebrew。我使用 --enable-frei0r --enable-filter=frei0r 来构建 ffmpeg,指令来自此 git:
https://github.com/mxcl/homebrew/commit/f63399c3d0241e7534e73b9fe9d4413b151414b9
但无法真正使用 frei0r。
编辑:这是完整的输出:
$ ffmpeg -i 1.mp4 -vf -vf frei0r=glow:0.5 output.mpg
ffmpeg version 0.10 Copyright (c) 2000-2012 the FFmpeg developers built on Mar 4 2012 11:47:02 with clang 3.0 (tags/Apple/clang-211.10.1)
configuration: --prefix=/usr/local/Cellar/ffmpeg/0.10 --enable-shared --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-libfreetype --cc=/usr/bin/clang --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-librtmp --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libxvid --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libass --disable-ffplay --enable-frei0r --enable-filter=frei0r --enable-filter=frei0r_src --enable-libopencv
libavutil 51. 34.101 / 51. 34.101
libavcodec 53. 60.100 / 53. 60.100
libavformat 53. 31.100 / 53. 31.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 60.100 / 2. 60.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 6.100 / 0. 6.100
libpostproc 52. 0.100 / 52. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
creation_time : 2011-12-15 10:24:56
encoder : Lavf53.24.0
Duration: 00:00:15.44, start: 0.000000, bitrate: 2736 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080, 2604 kb/s, 23.98 fps, 23.98 tbr, 48k tbn, 47.95 tbc
Metadata:
creation_time : 2011-12-15 10:24:56
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, s16, 128 kb/s
Metadata:
creation_time : 2011-12-15 10:24:56
handler_name :
[NULL @ 0x7fcb9184a400] Unable to find a suitable output format for 'frei0r=glow:0.5'
frei0r=glow:0.5: Invalid argument
答案1
请尝试以下操作:
ffmpeg -v debug -i 1.mp4 -vf frei0r=glow:0.5 output.mpg
你可能会看到类似这样的内容:
[Parsed_frei0r_0 @ 0x7fe7834196a0] 在“/Users/user/.frei0r-1/lib/glow.dylib”中寻找 frei0r 效果 [Parsed_frei0r_0 @ 0x7fe7834196a0] 在“/usr/local/lib/frei0r-1/glow.dylib”中寻找 frei0r 效果 [Parsed_frei0r_0 @ 0x7fe7834196a0] 在“/usr/lib/frei0r-1/glow.dylib”中寻找 frei0r 效果
ffmpeg 可能是正确的。如果你愿意,ls -l /usr/local/lib/frei0r-1/
你会看到插件与.so
扩展一起安装。
在我的计算机上(OSX 10.7.3,ffmpeg 1.0 和 frei0r-1.3),我刚刚做了类似的事情:
for file in /usr/local/lib/frei0r-1/*.so ; do cp $file "${file%.*}.dylib" ; done
这解决了这个问题,因为该.so
库有两种架构,i386 和 x86_64。
我确信这不是一个通用的解决方案,但是它对我来说确实有用。
答案2
我也遇到了这个问题,并在 ffmpegvf_frei0r.c
源代码的第 229 行发现了这个环境变量:
if ((path = av_strdup(getenv("FREI0R_PATH")))) {
...
因此,使用以下方式设置
export FREI0R_PATH=/path/to/.so-files
对我有用。将此路径替换为.so
libfrei0r 文件的存储位置。
答案3
截至 2021 年 Mac 机器:
- 使用 brew 安装 frei0r
brew install frei0r
- 设置 FREI0R_PATH
export FREI0R_PATH="/opt/homebrew/Cellar/frei0r/1.7.0/lib/frei0r-1"
- 跑步
for file in /opt/homebrew/Cellar/frei0r/1.7.0/lib/frei0r-1/*.so ; do cp $file "${file%.*}.dylib" ; done
- 重新启动终端(或者
source .zshrc
如果您使用 oh-my-zsh 等)