По-перше, вам потрібно подавати display RGB:-
необроблені байти, а не закодовану шістнадцяткову рядок, як ви будуєте з цим hexdump | sed | tr
конвеєром.
По-друге, ви не даєте йому достатньо байтів: вам потрібно 3 байти на піксель, по одному на кожен кольоровий канал.
Це робить те, що ви хочете:
mx=320;my=256;head -c "$((3*mx*my))" /dev/urandom | display -depth 8 -size "${mx}x${my}" RGB:-
Щоб зберегти безпосередньо в PNG, ви можете зробити це:
mx=320;my=256;head -c "$((3*mx*my))" /dev/urandom | convert -depth 8 -size "${mx}x${my}" RGB:- random.png
Ось типове вихідне зображення:
Якщо ви хочете зробити анімацію, не потрібно створювати та зберігати окремі кадри. Ви можете подавати сирий потік байтів прямо у ffmpeg / avconv, наприклад
mx=320; my=256; nframes=100; dd if=/dev/urandom bs="$((mx*my*3))" count="$nframes" | avconv -r 25 -s "${mx}x${my}" -f rawvideo -pix_fmt rgb24 -i - random.mp4