The following code playes "sample.mp3", and terminates. This is so surprising because the data passed via pipe are binary streams, so ffplay should have no idea about the duration of "sample.mp3", but it terminates right after it reaches the end.
$ cat sample.mp3 | ffmpeg -i pipe:0 -f mp3 pipe:1 | ffplay -autoexit -
What binary signal is ffplay watching to detect the terminal of sample.mp3?