Skip to content

danielesteban/pixels

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pixels

Led panel webcam/screencast/video/gif network player for the RPI

Server:

  • Hook up the LED panel to the RPI
  • Clone this repo and it's submodules: git clone --recursive https://github.com/danielesteban/pixels.git /usr/src/pixels/
  • Compile the server binary: cd /usr/src/pixels/server && make
  • Install the unit service file: ln -s /usr/src/pixels/server/misc/pixels.service /etc/systemd/system/pixels.service
  • Enable the service: systemctl enable pixels
  • Start the service: systemctl start pixels

You may need to edit the RGBMatrix::Options at the bottom of: server/src/main.cc to suit your setup and/or edit the paths in server/misc/pixels.service before enabling the service.

The communication protocol is super straight-forward: Just PNG files headed by a two-byte (uint16) payload length. You may use any client that sends frames in this fashion:

const client = net.connect({
  host: 'RPI_SERVER_HOST',
  port: 8080
}, () => {
  client.write(Buffer.from([png.length & 0xFF, (png.length >> 8) & 0xFF]));
  client.write(png);
});

You should also wait for the server to close the connection before opening a new one. This is the way the server let's you know when the vertical sync (buffer swapping) has happened.

client.on('close', sendNextFrame);

Client:

Screenshot

  • Install app dependencies: cd client && npm i
  • Launch the desktop client: cd client && npm start

About

Led panel webcam/screencast/video/gif network player for the RPI

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published