I'm attempting some streaming with FFMpeg, and I think I have finally found the solution I need to screen blanking. This requires writing PNG's to a named pipe and then having FFMpeg read them as an overlay. However, I seem to be having a weird issue.
#!/bin/bash
mkfifo /tmp/stream_pipe
cat /path/to/transparent/or/splash/screen.png > stream_pipe
echo "done!"
In this example, echo "done!"
never actually runs.
So, I moved to the terminal and tried the same thing, and sure enough the cat
command hangs indefinitely.
I don't recall ever having issues with catting to named pipes and, indeed, I saw a lot of named pipe references that use just this. What could possibly be going wrong here? Shouldn't cat
exit once it has finished writing the file to the pipe? The file being written is just a normal PNG file, so this has really got my puzzled.
Or is it that cat
attempts to close the pipe upon writing perhaps? This would make sense why it would hang since it's not a legitimate file, but I would imagine that cat
would know the difference or wouldn't care.
EDIT: cat $file | echo -n > /tmp/stream_pipe
exhibits the same behavior
cat /tmp/stream_pipe > /dev/null
in another terminal. I seems to remember that the pipe will cache around 4k of data and then block, waiting to be emptied.cat >pipe
in background and let the multitasking do the magic...