#image #pixelflut #animation #command #client #pixel #server

bin+lib pixelbomber

为图像和动画提供极快速度的 pixelflut 客户端

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

Download history 44/week @ 2024-05-12 90/week @ 2024-05-26 297/week @ 2024-06-02 249/week @ 2024-06-09 20/week @ 2024-06-16 182/week @ 2024-07-07 1/week @ 2024-07-14 14/week @ 2024-07-28 36/week @ 2024-08-04

每月下载量 66
用于 breakwater-parser

GPL-3.0 许可证

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