smem 콜백을 사용하여 모든 미디어 (rtsp, mjpeg, mp4, avi ...)에서 원시 프레임을 검색하는 데 libvlc를 사용하고 있으며 모든 것이 잘 재생됩니다.libvlc_media_player_stop 반환 할 30 초 반환
하지만 내 문제는 libvlc_media_player_stop 또는 libvlc_media_player_release를 호출하면 30 초 동안 내 프로그램이 멈추는 것입니다.
나는 검색을 많이 할 시도 많은 해결 방법 :
정지를 호출하는 새 스레드를 확인 : 내가 미디어 새롭게 재생하려는 경우 MediaPlayer를 여전히에 걸어 때문에 내 문제가 해결되지 않습니다 주 스레드.
마우스 이벤트가 아닌 주 스레드에서 전화를 끊습니다. 30 초도 걸렸습니다.
다른 버전 2.1.3에서 최신 버전 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);
정지 : 내가 VLC와 다른 문제를 많이 찾았지만, 그 easyly 모든 유일한 라이브러리 느릅 나무 핸들의
libvlc_media_player_set_hwnd(mpMediaPlayer, NULL);
libvlc_media_release(mpMedia);
libvlc_media_player_stop(mpMediaPlayer);
libvlc_media_player_release(mpMediaPlayer);
논문 미디어.
그래서 어떻게 멈추지 않고 멈출 수 있습니까?
감사합니다.
libvlc_media_player_stop을'libvlc_media_release' 전에 시도 했습니까? – i486
예, libvlc_media_player_stop 만 시도하고 libvlc_media_player_release도 멈추지 않고 항상 30 초가 걸렸습니다. – Maypeur
나는 똑같은 문제에 직면 해있다. 해결 했니? – Temak