ffmpeg - ffmpeg过滤器表达式调用了什么随机函数?
问题描述
例如random(-1)
在 geq 中:
ffmpeg -f lavfi -i nullsrc=s=10x10:r=25:d=4 -vf geq=lum='255':cb='255*random(-1)':cr='255*random(-1)',scale=200:200:flags=neighbor -bf 0 test.mp4
我总是在第一帧中得到完全相同的前 2 个像素的颜色。第一帧总是有非常相似的颜色。从第 3 帧开始,开始变得更好。此外, random() 似乎只在单帧内引入随机。每一帧的第一个像素的顺序完全相同:
ffmpeg -f lavfi -i nullsrc=s=1x1:r=25:d=4 -vf geq=lum=255:cb='255*random(-1)':cr='255*random(-1)',scale=10:10:flags=neighbor -vframes 10 f%05d.png
我查看了源代码,但看不到实际调用了什么随机函数:
case e_random:{
int idx= av_clip(eval_expr(p, e->param[0]), 0, VARS-1);
uint64_t r= isnan(p->var[idx]) ? 0 : p->var[idx];
r= r*1664525+1013904223;
p->var[idx]= r;
return e->value * (r * (1.0/UINT64_MAX));
}
我如何在 geq 中获得适当的随机性?
解决方案
它使用带有乘数 1664525 和增量 1013904223的线性同余生成器。
您当然可以修改它以满足您的需求。查看av_get_random_seed
更多随机性来源。
推荐阅读
- audio - 有没有办法在 python 3.7 中使用 youtube-dl 或 pafy 库直接从 youtube 视频流式传输音频?
- mysql - 在 MySQL 中获得更准确结果的最佳方法
- python - 在 Google Cloud AI 平台上安装 libspatialindex
- javascript - 正则表达式匹配 n 位忽略空格和符号
- c# - 关于多线程的基本问题
- flutter - Flutter Firebase 通知问题 Android
- java - 导入外部 jar 导致问题
- amazon-web-services - 无法在 AWS Lambda 上运行 gocv
- audio - ffmpeg 提取所有音频通道
- machine-learning - NLP 情绪分析 - 基本指南