Я использую libvlc для извлечения необработанного фрейма с любого носителя (rtsp, mjpeg, mp4, avi ...) с помощью smem-обратных вызовов, и все отлично работает.libvlc_media_player_stop 30secondes to return
Но моя проблема в том, что когда я вызываю libvlc_media_player_stop или libvlc_media_player_release, он просто замораживает мою программу в течение 30 секунд.
Я делаю много поиска и попробовать многие обходные пути:
Сделать новую нить, чтобы вызвать остановку: не решить мою проблему, потому что, если я хочу играть заново СМИ, медиаплеер до сих пор висит в основной поток.
Вызов остановки из основного потока не на событие мыши: застрял 30 секунд.
Я пробую разную версию от 2.1.3 до последней версии git 3.0.0, и проблема остается прежней, так как вы называете эту остановку?
Инициализация:
char smem_options[1000];
sprintf(smem_options
, "#transcode{vcodec=RV24}:smem{"
"video-prerender-callback=%lld,"
"video-postrender-callback=%lld,"
"video-data=%lld},"
, (long long int)(intptr_t)(void*)&cbVideoPrerender
, (long long int)(intptr_t)(void*)&cbVideoPostrender
, (long long int)(void*)this);
const char * const vlc_args[] = {
"-I", "dummy",
"--verbose=0",
"--clock-jitter=0",
"--no-audio",
"--sout", smem_options // Stream to memory
};
mpLibVlc = libvlc_new(sizeof(vlc_args)/sizeof(vlc_args[0]), vlc_args);
Начало:
mpMedia = libvlc_media_new_path(mpLibVlc, mMediaPath.c_str());
mpMediaPlayer = libvlc_media_player_new_from_media(mpMedia);
libvlc_media_player_play(mpMediaPlayer);
Stop:
libvlc_media_player_set_hwnd(mpMediaPlayer, NULL);
libvlc_media_release(mpMedia);
libvlc_media_player_stop(mpMediaPlayer);
libvlc_media_player_release(mpMediaPlayer);
Я нашел много другой проблемы с VLC, но это единственная библиотека которым ручка easyly все тезисы.
Итак, как я могу назвать эту остановку без зависания?
спасибо.
Вы пробовали 'libvlc_media_player_stop' перед' libvlc_media_release'? – i486
Да, я пробовал только libvlc_media_player_stop и libvlc_media_player_release, но без остановки тоже, и это всегда занимало 30 секунд. – Maypeur
Я столкнулся с той же проблемой. Вы решили? – Temak