ffmeg thread_queue_size描述

声明:转帖时请注明出处

默认状况下thread_queue_size取值为8.

ffmpeg_opt.c open_input_file()html

#if HAVE_PTHREADS
    f->thread_queue_size = o->thread_queue_size > 0 ? o->thread_queue_size : 8;
#endif

 

ffmpeg官网对 thread_queue_size size 的说明

http://ffmpeg.org/ffmpeg.html大数据

-thread_queue_size size (input)this

This option sets the maximum number of queued packets when reading from the file or device. With low latency / high rate live streams, packets may be discarded if they are not read in a timely manner; raising this value can avoid it.spa

 

ffmpeg对 thread_queue_size size 的使用

static int init_input_threads(void)
{
    int i, ret;

    if (nb_input_files == 1)
        return 0;

    for (i = 0; i < nb_input_files; i++) {
        InputFile *f = input_files[i];

        if (f->ctx->pb ? !f->ctx->pb->seekable :
            strcmp(f->ctx->iformat->name, "lavfi"))
            f->non_blocking = 1;
        ret = av_thread_message_queue_alloc(&f->in_thread_queue,
                                            f->thread_queue_size, sizeof(AVPacket));
        if (ret < 0)
            return ret;

        if ((ret = pthread_create(&f->thread, NULL, input_thread, f))) {
            av_log(NULL, AV_LOG_ERROR, "pthread_create failed: %s. Try to increase `ulimit -v` or decrease `ulimit -s`.\n", strerror(ret));
            av_thread_message_queue_free(&f->in_thread_queue);
            return AVERROR(ret);
        }
    }
    return 0;
}

 

总结:

对于输入多个文件时,thread_queue_size的值会起做用。对于输入一个文件时,thread_queue_size参数不起做用。code

当 thread_queue_size 值越大时,能够保存的demux的数据越多,对于低延迟或者高码率的视频,可以保存较大数据,防止丢弃。orm

相关文章
相关标签/搜索