Given the fact that public file paths will generally not be available in Android Q, I am attempting to figure out how to make my FFmpeg audio decoder work with file descriptors, without copying the file to my app's private directories.

I hope there's an answer for you. Last I wrestled with the seekable-streams problem, the answer was "no". Only file-backed streams were seekable. For short content, you could copy the content to some local file then play that, but I'm guessing you are looking to support content of semi-arbitrary length...
– CommonsWareAug 10 at 20:55

@CommonsWare yes, copying is not good for me. I'm assuming my answer will be to use another decoder like the platform MediaCodec, but that's not ideal for me either.
– Steve MAug 10 at 21:01

Prefix cache: to the pipe url you open and check. cache will attempt to create a temp file in /tmp if mkstemp is available or in pwd if not.
– GyanAug 11 at 5:27

Sorry my bounty didn't turn up an answer for you! If you think of it, and if you do find a solution, let me know what it is! These sorts of hiccups are things we need to get addressed in Android R, if we are then permanently limited to the Storage Access Framework, MediaStore, etc.
– CommonsWareAug 20 at 22:22