FFMPEG API: как очистить буфер в реальном времени? - PullRequest
0 голосов
/ 29 ноября 2018

Вот код C ++, который я использую для доступа к своей веб-камере.

int Camera::Init(char* file_name,
                char* device_name,
                char* format,
                char* resolution,
                char* frame_rate,
                char* pixel_format)
{
    av_log(NULL, AV_LOG_INFO, "---INIT STARTED\n");
    avdevice_register_all();
    av_register_all();

    AVDictionary* properties_collection = NULL;
    av_dict_set(&properties_collection, "f", format, NULL);
    av_dict_set(&properties_collection, "video_size", resolution, NULL);
    av_dict_set(&properties_collection, "framerate", frame_rate, NULL);
    av_dict_set(&properties_collection, "pix_fmt", pixel_format, NULL);
    AVInputFormat *input_format = av_find_input_format("dshow");
    char command_line[256];
    sprintf(command_line, "video=%s", device_name);
    AVFormatContext *input_context = avformat_alloc_context();
    //input_context->flags |= AVFMT_FLAG_NOBUFFER;      //DOESN'T HELP
    //input_context->max_picture_buffer = 0;            //ERR

    int err_code = 0;
    err_code = avformat_open_input(&input_context,
                                    command_line,
                                    input_format,
                                    &properties_collection);
    int i = 0;
    while (i++ < 30)
    {
        Sleep(1000);
        //avformat_flush(input_context); //DOESN'T HELP
        //av_free(input_context); //ERR
    }
    system("pause");
    return 0;
}

Сразу после " avformat_open_input () " он начинает считывать кадры в некоторый внутренний буфер без моего участия, дажевызов " av_read_frame () ".Примерно через 10 секунд он начинает выдавать мне сообщения об ошибках:

[dshow @ 0014ed40] real-time buffer [VirtualBox Webcam - FULL HD 1080P Webcam] [video input] 
too full or near too full (62% of size: 3041280 [rtbufsize parameter])! 
frame dropped!
...
...
...
[dshow @ 0014ed40] real-time buffer [VirtualBox Webcam - FULL HD 1080P Webcam] [video input] 
too full or near too full (100% of size: 3041280 [rtbufsize parameter])! 
frame dropped!

Как очистить этот буфер или не использовать его?

Заранее спасибо.

PПожалуйста, простите мой английский,

PPSХороший день.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...