libvlc 获取视频帧 使用了 libvlc_video_set_callbacks 但是进入回调得到的参数都是空句柄是为什么?
//播放网络文件
libvlc_media = SafeNativeMethods.libvlc_media_new_location(libvlc_instance, pMrl);
SafeNativeMethods.libvlc_media_add_option(libvlc_media, ":avcodec-hw=any");
if (libvlc_media == null || libvlc_media == IntPtr.Zero)
{
return false;
}
SafeNativeMethods.libvlc_media_parse(libvlc_media);
//将Media绑定到播放器上
SafeNativeMethods.libvlc_media_player_set_media(libvlc_media_player, libvlc_media);
time = SafeNativeMethods.libvlc_media_get_duration(libvlc_media) * 1.0;
//获取对应播放器句柄
mediaPlayerInstance = SafeNativeMethods.libvlc_media_player_new_from_media(libvlc_media);
//释放libvlc_media资源
SafeNativeMethods.libvlc_media_release(libvlc_media);
//获取视频帧
SafeNativeMethods.libvlc_video_set_callbacks(mediaPlayerInstance, _videoLockCB, _videoUnlockCB, _videoDisplayCB, mediaPlayerInstance);//IntPtr.Zero
SafeNativeMethods.libvlc_video_set_format(mediaPlayerInstance, StrToIntPtr("RGBA"), _width, _height, _pitch);
SafeNativeMethods.libvlc_media_player_play(mediaPlayerInstance);
这里定义了vlc播放器并且设置了回调
但是进入这里的时候
private static void VideoDiplayCallBack(IntPtr opaque, IntPtr picture)
{
..........
}
opaque 和 picture 都是 Inprt.Zero