22 个版本 (8 个重大变更)
0.9.0 | 2024 年 6 月 13 日 |
---|---|
0.7.0 | 2024 年 6 月 4 日 |
0.6.0 | 2024 年 1 月 21 日 |
0.5.6 | 2023 年 12 月 30 日 |
0.4.1 | 2023 年 6 月 21 日 |
#2 in #pixelflut
每月下载量 66
用于 breakwater-parser
41KB
954 行
Pixelbomber
用于摧毁 pixelflut 服务器的程序
此客户端主要受到 pixelpwnr 的启发,尽管我对代码进行了大量修改以降低瓶颈。
安装
使用 cargo
cargo install pixelbomber
或克隆然后构建
git clone https://github.com/fabi321/pixelbomber.git
cd pixelbomber
cargo build --release
特性
- 并发写入管道
- 使用连续图像的动画图像
- 控制渲染大小和偏移量
- 比 pixelpwnr 快(在我的情况下快 8 倍以上)
- 支持 Linux、Windows 和 MacOS
- 与 pixelpwnr 相同的命令行界面
- 支持灰度像素命令以及偏移命令,使用
--offset
和--gray
启用 - 支持自动功能和大小检测,默认启用
- 支持
PBxyrgba
格式的二进制像素命令(x 和 y 是 u16 le 编码) - 支持输入流
- 快速图像到像素命令编码器
从流中获取图像
使用 -
作为唯一的图像文件路径,您可以从 stdin 中管道传输图像。Pixelbomber 期望输入位图文件。您可以使用 --workers
标志指定可以并行处理的图像数量。
使用 ffmpeg 的示例
ffmpeg -re -i <video_file> -f image2pipe -c:v bmp - | cargo run --release -- <host> -
一些 ffmpeg 小贴士
- 如果输入是视频文件,请使用
-re
- 在
-i
之前使用-stream_loop -1
重复视频
权衡
如果只想循环静态视频,指定视频帧作为图像会更快,因为它们只需编码一次。
从视频中获取图像
通过只提供一个文件,并使用 --video
标志,pixelbomber 可以从该视频中读取所有帧作为图像。这会导致 pixelbomber 预编译所有图像为命令,并在之后进行打孔。警告:这可能会消耗大量的 RAM (~50GB 用于 1 分钟 FullHD 30fps 视频)。当空闲系统内存低于 1GB 时,Pixelbomber 将停止编码新帧。并行处理的帧数可以通过 --workers
标志进行配置。
与流方法的比较
与从 stdin 读取相比,此方法在打孔时使用的 CPU 较少,不会丢失任何帧。但这也需要使用大量的 RAM。
依赖项
~5–29MB
~426K SLoC