在 avconv 或 ffmpeg 中应用 Gamma 校正

在 avconv 或 ffmpeg 中应用 Gamma 校正

avconv我无法使用或通过 Gamma 校正调整视频ffmpeg。我使用 Debian Jessie,所以我首先怀疑它avconv不完整,因此这个问题,ffmpeg是我自己搭建的。

使用这篇博文,我假设以下过滤器就可以了(应用 Gamma 0.5):

ffmpeg -i in.mp4 -vf mp=eq2=0.5:1:1:1:1:1:1:1 out.mp4

然而,它只是说

[AVFilterGraph @ 0x1faf6a0] No such filter: 'mp'
Error opening filters!

滤镜改名了吗?如何应用 Gamma 校正?所以我查看了本文档看来我应该使用eq过滤器。尝试:

ffmpeg -i in.mp4 -vf eq=gamma=0.5 out.mp4

没有成功:

[AVFilterGraph @ 0x23466a0] No such filter: 'eq'
Error opening filters!

答案1

似乎默认情况下缺少几个过滤器,因为 ffmpeg 的人不喜欢 GPL 许可证...所以下面是我一步一步做的:

(1)安装依赖项

sudo apt-get install yasm nasm \
            build-essential automake autoconf \
            libtool pkg-config libcurl4-openssl-dev \
            intltool libxml2-dev libgtk2.0-dev \
            libnotify-dev libglib2.0-dev libevent-dev \
            checkinstall

(2)克隆存储库

git clone git://git.videolan.org/ffmpeg.git

(3)启用 GPL 进行编译:

cd ffmpeg
./configure --enable-gpl --prefix=/usr
time make -j 8
sudo mkdir /usr/share/ffmpeg
sudo checkinstall

在最后一步中,系统会要求您输入软件包信息。我添加了版本信息,但这应该是可选的。


然后它就可以工作了:

ffmpeg -i in.mp4 -vf "eq=gamma=0.5" out.mp4

编辑:不幸的是,上面的代码仍然为您提供了一个原始的 ffmpeg,没有任何有用的编解码器,例如 libx264。在花了几个小时之后,我得出结论,让它工作的唯一方法是忘记从源代码编译,并添加 deb-multimedia,如链接答案中所建议的那样。

答案2

我经常从 git repo 构建 ffmpeg,其中包含 30 多个库,这些对我来说很有用,因为 ffmpeg 的示例文档很糟糕

简单的方法,查找其中一条默认曲线

ffmpeg -i file.mp4 -codec:v blahblahblah -filter:v curves=preset=strong_contrast -codec:a copy dump_file.mp4

使用 lut

ffmpeg -i file.mp4 -codec:v blahblahblah -filter:v lutyuv=y=val*1.3 -codec:a copy dump_file.mp4

全力以赴,定义 rgb 的所有最小值/最大值,这将会变亮

ffmpeg -i file.mp4 -codec:v blahblahblah -filter:v colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.95:gimax=0.94:bimax=0.93 -codec:a copy dump_file.mp4

我确认 ffplay 命令仍然有效

ffplay movie.mp4 -vf eq=gamma=1.5

相关内容