Не удалось буферизовать видеоданные и транслировать их с помощью libvlc

Я пытаюсь буферизовать аудио и видео данные и прочитать их из буфера, используя Libvlc в коде C++. Моя версия ОС - Ubuntu 16.04 LTS 64bit, версия LibVls: 2.2.2-5.

Я хочу, чтобы RV24 или RV32 работали с необработанными данными. С их помощью у меня нет видеоданных, но есть аудиоданные. Я видел аналогичную проблему здесь, также я не получаю никаких данных ни в cbVideoPostrender, ни в функциях cbVideoPrerender. Вопрос в том, почему у меня нет видеоданных? Код должен быть похож на тот, что здесь. Также можно найти пример кода в github

int StreamGrabberSetMedia(VlcStreamGrabber * pGrabber, libvlc_media_t * pMedia, bool paceControl)
{
    char vcodec[] = "RV32";
    char acodec[] = "s16l";
    char pszOptions[1024] = {0};
    libvlc_event_manager_t * pEventManager = NULL;

    if (pGrabber == NULL || pMedia == NULL) return VLC_ENOITEM; 

    sprintf_s( 
        pszOptions,
        1024,
        ":sout=#transcode{"
             "vcodec=%s,"
             "acodec=%s,"
             "threads=2,"
        "}:smem{"
            "%s,"
            "audio-prerender-callback=%lld,"
            "audio-postrender-callback=%lld,"
            "video-prerender-callback=%lld,"
            "video-postrender-callback=%lld,"
            "audio-data=%lld,"
            "video-data=%lld"
        "}",
        vcodec,
        acodec,
        (paceControl ? "time-sync" : "no-time-sync"),
        (long long int)(intptr_t)(void*) &AudioPrerender,
        (long long int)(intptr_t)(void*) &AudioPostrender,
        (long long int)(intptr_t)(void*) &VideoPrerender,
        (long long int)(intptr_t)(void*) &VideoPostrender,
        (long long int)(intptr_t)(void*) pGrabber,
        (long long int)(intptr_t)(void*) pGrabber
    );
}

Я новичок в этой области, и я буду признателен за любую помощь.

0 ответов

Другие вопросы по тегам