如何在ffmpeg中设置任意像素的值?

如何在ffmpeg中设置任意像素的值?,ffmpeg,video-processing,Ffmpeg,Video Processing,我想修改ffmpeg中每个像素的rgb值 我需要实现以下功能: A[x+expr\u 1][y]=expr\u 2 其中x和y是当前采样的像素,A是需要修改其像素的输入帧,expr_1、expr_2是两个独立的表达式 我尝试使用geq过滤器,但除了当前采样的像素值之外,似乎没有其他方法来设置像素值。对于距离,函数p(x,y)仅返回指定位置的像素值,但不允许为该像素设置值。换句话说,ffmpeg似乎只允许以下内容: A[x][y] = expr 有没有办法告诉ffmpeg设置特定像素的值 谢谢您

我想修改ffmpeg中每个像素的rgb值

我需要实现以下功能:

A[x+expr\u 1][y]=expr\u 2

其中x和y是当前采样的像素,A是需要修改其像素的输入帧,expr_1、expr_2是两个独立的表达式

我尝试使用geq过滤器,但除了当前采样的像素值之外,似乎没有其他方法来设置像素值。对于距离,函数p(x,y)仅返回指定位置的像素值,但不允许为该像素设置值。换句话说,ffmpeg似乎只允许以下内容:

A[x][y] = expr
有没有办法告诉ffmpeg设置特定像素的值

谢谢您的时间。

有没有办法告诉ffmpeg设置特定像素的值

这会将(45651)的R通道值设置为NEWVAL,并中继所有其他像素


为了检查是否可以使用更一般化的表达式,您应该使用实际的
expr1
expr2

来说明您的需求谢谢您的回答,但不幸的是,我认为这并不能解决问题。expr1e和expr2还没有很好的定义,但它们肯定依赖于X和Y变量。因此,假设expr1=X+1,那么if条件将永远不会为真,因为对于任何X,X都不等于X+expr1=X+(X+1)。geq不允许您寻址特定像素,但您可以使用我的答案中的形式设置一个像素的值。您必须根据当前样本重新格式化表达式,例如,如果您想将(12,34)的值设置为(42,24),您需要设置
p(X+30,Y-10)
ffmpeg -i in.mp4 -vf geq=r='if(eq(X,45)*eq(Y,651),NEWVAL,p(X,Y))' out.mp4