Не удалось буферизовать видеоданные и транслировать их с помощью 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
);
}
Я новичок в этой области, и я буду признателен за любую помощь.