В дополнение к моей прошлой заметке: post/2014/09/24/x264_low_latency пару статей на эту же тему, но без привязки к x264:
- Minimizing the initial delay - профилировка цепочки запуска входного потока
- Minimizing the latency in realtime communication
Стоит отметить, что в первой статье наихудшие показатели показала avformat_find_stream_info()
, эта же функция не понравилась коллеге на работе, но без неё могут быть такие артефакты:
- ошибки при чтении фрейма (
av_read_frame()
) - может случаться примерно такое: https://github.com/h4tr3d/avcpp/pull/7#issuecomment-122670538
- может ещё чего.
В общем, согласно документации:
The above code attempts to allocate an AVFormatContext, open the specified file (autodetecting the format) and read the header, exporting the information stored there into s. Some formats do not have a header or do not store enough information there, so it is recommended that you call the avformat_find_stream_info() function which tries to read and decode a few frames to find missing information.
Суть: просто открыть файл не всегда достаточно, что бы делать предположения о некоторых параметрах файла. Походу, с этим нужно просто смириться или попытаться предпринять меры из ссылки 1, а именно зарезать параметры probesize
и analyzeduration
в 32 (минимально допустимое значение).