使用libvlc原因:直接使用oponcv获取的rtsp流及其容易掉帧,而且图像质量非常的差。
libvlc数据结构及函数:
1.声明窗口
cv::namedWondow(libvlc_get_version( ),CV_WINDOW_AUTOSIZE)
2.视频流连接
libvlc_media_t* media = libvlc_media_new_location(instance, "rtsp://192.168.200.20:8554/test");
3.获取视频一帧
libvlc_media_player_t* mediaPlayer = libvlc_media_player_new_from_media(media)
4.回调设置
libvlc_video_set_callbacks(mediaPlayer, lock, unlock, display, NULL);
libvlc_video_set_callbacks(
libvlc_media_player_t * mp, //数据帧
libvlc_video_lock_cb lock, 给视频内存上锁must not null
libvlc_video_unlock_cb unlock,给视频解锁must not null
libvlc_video_display_cb display,
void * opaque )
5.格式设置
LIBVLC_API void libvlc_video_set_format (
libvlc_media_player_t * mp,//数据帧
const char * chroma,//fourcc (e.g. "RV32" or "YUYV")
unsigned width, //像素宽
unsigned height,//像素高
unsigned pitch //间距
)
6.播放
libvlc_media_player_play(mediaPlayer);