wince版本VLC播放流媒体问题
我用VLC-1.0.5的源码编译了wince版本的vlc,想用libvlc.dll的接口播放流媒体,但是遇到了许多问题
1.调用libvlc_new加载plugin,加载到liblive555_plugin.dll、libspatializer_plugin.dll和libwince_plugin.dll这三个dll的时候会报错“应用程序edm.exe出现严重错误,必须关闭”,我把这三个dll删掉了代码才能执行下去。
2.将上面提到的三个DLL删掉后,能正常播放本地文件,但是不能播放RTP流媒体,查看打印信息会发现“线程 0xa970002 已退出,返回值为 0 (0x0)。”
调用libvlc_media_player_get_state (p_media_player, &ex)返回libvlc_Error,但是ex并没有返回异常。
3.在DEBUG模式下还能播放本地文件,在Release模式下调用libvlc的接口直接出错了0xC000005,内存不能为READ
4.我需要播放的流媒体是从电视卡采集的,本来想用vlc-1.0.5的win32版本作为服务器的,但它不争气,能够播放电视卡的内容,却死活不能串流到局域网,后来换了vlc-1.1.1版本才能串流,还不能串流声音。我的电视卡是天敏TB400
vlc版本是1.0.5,使用cygwin+mingw32ce编译,我的开发环境是VS2008+WINCE6.0,使用MFC开发。
这个问题已经纠结了我一个星期了,哪位前辈能帮我解决wince播放流媒体的问题的话,还有100分奉上,帮帮忙吧!
附上我调用libvlc播放流媒体的代码,这个代码我在window下是可以正常播放流媒体的
//char* psz_mrl = "rtp://@:5004";
char* psz_mrl = "rtp://@239.255.0.1:5004";//组播,get state返回libvlc_Error
//char* psz_mrl = "\\Disk2\\CEClient\\test.avi";//这个参数可以正常播放test.avi
libvlc_exception_t ex;
libvlc_exception_init(&ex);
int vlc_argc = 0;
const char * const vlc_argv[] = {
"-I", "dummy", /* Don't use any interface */
"--ignore-config" /* Don't use VLC's config */
};
vlc_argc = sizeof(vlc_argv)/sizeof(vlc_argv[0]);
p_instance = libvlc_new(vlc_argc, vlc_argv, &ex); //这里开始load plugin的dll文件,加载到上面提到的三个dll的时候会出错,然后报“应用程序edm.exe出现严重错误,必须关闭”
raise(&ex);
p_media = libvlc_media_new(p_instance, psz_mrl, &ex);
raise(&ex);
p_media_player = libvlc_media_player_new_from_media(p_media, &ex);
raise(&ex);
libvlc_drawable_t hwnd =
(libvlc_drawable_t) this->GetSafeHwnd();
libvlc_media_player_set_drawable(p_media_player, hwnd, &ex);
raise(&ex);
libvlc_media_player_play(p_media_player, &ex); //组播的时候,执行这句会打印“线程 0xa970002 已退出,返回值为 0 (0x0)。”
raise(&ex);
libvlc_state_t state;
do {
state = libvlc_media_player_get_state (p_media_player, &ex);
raise (&ex);
} while( state != libvlc_Playing &&
state != libvlc_Error &&
state != libvlc_MediaPlayerEndReached );
assert( state == libvlc_Playing || state == libvlc_MediaPlayerEndReached );//返回state == libvlc_Error