64 pxl matrix help

Ok, I have a fix for this on github.
Please try the latest version and see if it works better.

OK, I have re downloaded the ProffieOS-master from GitHub. (if this was incorrect please let me know). It looks like it has come farther along.

a@a frames9x9 % /Users/a/Desktop/ProffieOS-master/pqoi/cpqoi scroll.mp4 “pamscale -xysize 9 9” >idle.pqf
Executing: ffprobe -i “$FILE” 2>&1 | sed -n ‘s@.Video:., ([0-9.]) fps,.@\1@gp’
Executing: ffprobe -i “$FILE” 2>&1 | sed -n ‘s@.Video:., ([0-9.]) fps,.@\1@gp’
FPS: 15:1
Executing: ffmpeg -i “$FILE” -an -pix_fmt yuv444p -f yuv4mpegpipe - | y4mtopnm -P | pamscale -xysize 9 9
sh: y4mtopnm: command not found
pamscale: Error reading first byte of what is expected to be a Netpbm magic number. Most often, this means your input file is empty
ffmpeg version 7.1.1 Copyright (c) 2000-2025 the FFmpeg developers
built with Apple clang version 16.0.0 (clang-1600.0.26.6)
configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/7.1.1_1 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags=‘-Wl,-ld_classic’ --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libharfbuzz --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-audiotoolbox --enable-neon
libavutil 59. 39.100 / 59. 39.100
libavcodec 61. 19.101 / 61. 19.101
libavformat 61. 7.100 / 61. 7.100
libavdevice 61. 3.100 / 61. 3.100
libavfilter 10. 4.100 / 10. 4.100
libswscale 8. 3.100 / 8. 3.100
libswresample 5. 3.100 / 5. 3.100
libpostproc 58. 3.100 / 58. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from ‘scroll.mp4’:
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf59.27.100
Duration: 00:00:07.87, start: 0.000000, bitrate: 6 kb/s
Stream #0:00x1: Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 16x16, 4 kb/s, 15 fps, 15 tbr, 15360 tbn (default)
Metadata:
handler_name : VideoHandler
vendor_id : [0][0][0][0]
encoder : Lavc59.37.100 libx264
Stream mapping:
Stream #0:0#0:0 (h264 (native) → wrapped_avframe (native))
Press [q] to stop, [?] for help
Output #0, yuv4mpegpipe, to ‘pipe:’:
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf61.7.100
Stream #0:0(und): Video: wrapped_avframe, yuv444p(progressive), 16x16, q=2-31, 200 kb/s, 15 fps, 15 tbn (default)
Metadata:
handler_name : VideoHandler
vendor_id : [0][0][0][0]
encoder : Lavc61.19.101 wrapped_avframe
[vost#0:0/wrapped_avframe @ 0x121f04b80] Error submitting a packet to the muxer: Broken pipe
Last message repeated 1 times
[out#0/yuv4mpegpipe @ 0x600002cd4000] Error muxing a packet
[out#0/yuv4mpegpipe @ 0x600002cd4000] Task finished with error code: -32 (Broken pipe)
[out#0/yuv4mpegpipe @ 0x600002cd4000] Terminating thread with return code -32 (Broken pipe)
[out#0/yuv4mpegpipe @ 0x600002cd4000] Error writing trailer: Broken pipe
[out#0/yuv4mpegpipe @ 0x600002cd4000] Error closing file: Broken pipe
[out#0/yuv4mpegpipe @ 0x600002cd4000] video:0KiB audio:0KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 86.818182%
frame= 1 fps=0.0 q=-0.0 Lsize= 1KiB time=00:00:00.33 bitrate= 19.7kbits/s speed= 51x
Conversion failed!
Failed to read PAM header.
a@a frames9x9 %

You need mjpegtools. (brew install mjpegtools)

Thanks. I have a proffie produced idle.pqf . I will try to light the saber this afternoon, gd I hope this works haha.

I appreciate everyone’s help. On a different note, POV is awesome. Good workout too.

Hopefully last question. I am testing using idle.pqf . I understand that this should play automatically. Do I need a corresponding .scf file for my pqf to work?

Thanks

Seems unlikely, you’re just getting to the point of making this work.
Once it works, you’ll probably have more questions, which would be welcome.

Yes. Otherwise it wouldn’t know what layer to play it on.
The PQF files can be called whatever you want, and may be shared between SCR files, or you can just create exactly one SCR file for every PQF file.

So close but so far away. Using the proffie created .pqf, I created my own .scr with one line. file=idle.pqf . both in the font in a folder named 9x9. Here is the serial.

8:11:02.605 → EVENT: Power-Pressed#1 millis=61346

18:11:02.605 → EVENT: Power-Pressed millis=61346

18:11:02.736 → EVENT: Power-Released#1 millis=61479

18:11:02.736 → EVENT: Power-Released millis=61479

18:11:02.736 → EVENT: Power-Shortclick#1 millis=61479

18:11:02.736 → EVENT: Power-Shortclick millis=61479

18:11:02.736 → Ignition.

18:11:02.801 → unit = 0 vol = 0.00, Playing Graflex3/hum01.wav

18:11:02.801 → channels: 1 rate: 44100 bits: 16

18:11:02.801 → unit = 1 vol = 0.50, Playing Graflex3/out08.wav

18:11:02.801 → channels: 1 rate: 44100 bits: 16

18:11:02.801 → humstart: 1800

18:11:02.801 → unit = 2 vol = 0.00, Playing Graflex3/swingl04.wav

18:11:02.801 → channels: 1 rate: 44100 bits: 16

18:11:02.801 → unit = 3 vol = 0.00, Playing Graflex3/swingh04.wav

18:11:02.801 → channels: 1 rate: 44100 bits: 16

18:11:02.801 → DISPLAY WAKEUP

18:11:02.835 → Display initialized.

18:11:03.924 → EVENT: Power-Pressed#1 ON millis=62637

18:11:03.924 → EVENT: Power-Pressed ON millis=62637

18:11:04.055 → EVENT: Power-Released#1 ON millis=62799

18:11:04.055 → EVENT: Power-Released ON millis=62799

18:11:04.055 → EVENT: Power-Shortclick#1 ON millis=62799

18:11:04.055 → Turning off 0.00@012

18:11:04.055 → Turning off 0.00@012

18:11:04.055 → Turning off 0.00@012

18:11:04.055 → Turning off 0.00@012

18:11:04.055 → Turning off 0.00@012

18:11:04.089 → unit = 4 vol = 0.50, Playing Graflex3/in02.wav

18:11:04.089 → channels: 1 rate: 44100 bits: 16

18:11:04.089 → Playing Graflex3/9x9/idle.scr

18:11:04.683 → No sounds found: pstoff

18:11:04.717 → Amplifier off.

18:11:05.704 → Unmounting SD Card.

18:11:06.893 → Time = 3000. PLI_OFF_TIME expired.

18:11:07.092 → DISPLAY SLEEP

18:11:13.786 → Booster off.

18:11:21.270 → Battery voltage: 4.16

18:11:41.288 → Battery voltage: 4.16

18:12:01.273 → Battery voltage: 4.16

18:12:21.288 → Battery voltage: 4.16

  1. make sure you have a newline after your “file=idle.pqf” line.
  2. What does your actual config look like? I assume you’re using DisplayStyle<> ?

Its working. Not yet readable, but I think I can get this to work this weekend. Thanks

That was fun. Thanks Fredrik and Brian for helping me along.

Need to work on the text. “Hello World, this is Proffie”

1 Like

I have this text “font” image collection of lettering if it helps
https://www.dropbox.com/scl/fo/3eghtwi7ou2xbu0qrm8wb/AH9euUBZ2cXZVvLbUv9oeWI?rlkey=kpnpz6delh8j0hyq7zqoqfzvr&st=9rcw7klp&dl=0

It may already exist but I wrote a python program that creates scrolling mp4s that I used to generate scrolling mp4’s for cpqoi conversion. I updated it to incorporate Brian’s font styles if anyone else is playing around with different matrix. It generates as a perfect square now, but can easily be modified to any display layout.

https://www.dropbox.com/scl/fi/schi0b51cuckaqfvwjx6j/Text-Scroll.zip?rlkey=vobne515ov4671t9uhgvzkn7f&st=g36szb69&dl=0

Can I play a .pqf and .scf from the common folder, or does it have to be in each individual font? Thanks

They can be in the common folder if you like.

Here is a text font letters in BMP images I’ve created specifically for dot matrix like the round 69-pixel one:

2 Likes