I am seeking any information beyond the ffmpeg sources and the dranger tutorial describing how to configure an AVDictionary for video playback.
I am just wrapping up a new version of an ffmpeg 4.2.3 LibAV based player library optimized for computer vision applications. (Optimized for CV means no audio or subtitle processing, ignoring each video frame’s timing too, just frames ASAP.) I’ve been the maintainer of this internal to my employer library for 5 years now, yet my understanding of how to maintain optimum performance each ffmpeg library version is a process of trial and error with AVDictionary settings and lots of googling.
FWIW, I’ve practically memorized all the libav posts on stackoverflow and spend time reading this list’s archives for gems. Yet, after years, my understand is still fuzzy as hell.
So I am seeking anyone’s blog, github repo/wiki, or threaded social media discussion where topics such as these are discussed:
Using AVDictionaries: discovering available options and their parameters
Once a stream’s codec is known, what are good options specific to different codecs?
How to achieve a minimal time to first frame when starting playback?
How to maintain minimal latency during playback?
About a week ago a Jasper Taxbol asked this list about anyone having knowledge about retaining information from a previous stream play so a new play of that same stream can be achieved without probing the stream for (now known) information. Jasper: did you learn anything on this front?
In the hopes of sparking some type of discussion, I have made a Github repo with a wiki. The wiki has the last 3 versions of this LibAV based player lib’s AVDictionary setup. The goal of these code fragments are minimal time to first frame and minimal latency during playback. If you have any information to add, or your own different AVDictionary code fragments, it would be very appreciated if you could contribute to the wiki, or reply here. I’ll collect and compile them at that github wiki for others to learn as well.