刚开始用vlc头很大,求大神相助

解决方案 »

  1.   

    libvlc_media_player_set_hwnd((libvlc_media_player_t *)libvlc_media_player_, handle);
      

  2.   

    蛋疼 , 我用vlc库版本太低 才会出现这个问题,后面使用了vlc 2.05 就没这个问题了
      

  3.   

    用libvlc_media_player_set_hwnd((libvlc_media_player_t *)libvlc_media_player_, handle);函数,填入句柄就会用对应的窗口
      

  4.   

    给你我的代码看
    int player(void)
    { libvlc_instance_t *     vlc_ins    = NULL;
    libvlc_media_player_t * vlc_player = NULL;
    libvlc_media_t *        vlc_media  = NULL; int width = SetWidthFromConfig();
    int height = SetHeightFromConfig(); //char szTitle[]="系统信息"; 
    //char szWindowClass[]="popMsg";
    MSG msg;
    char  url[50] = {0};
    char str[25];
    char SetCache[50] = {0}; sprintf(url,"udp://@:%s", itoa(RecvPortFromConfig(), str, 10));
    memset(str, 0, sizeof(str));
    sprintf(SetCache,"udp-caching=%s", itoa(VlcCacheFromConfig(), str, 10)); const char * vlc_args[] = 
    {
    "-I",
    "dummy",
    "--ignore-config",
    "--extraintf=logger",
    "--verbose=2", 
    };  
    // 创建一个VLC实例
    vlc_ins = libvlc_new(sizeof(vlc_args)/sizeof(vlc_args[0]), vlc_args);
    if(vlc_ins != NULL)
    {
    // 创建一个VLC播放器
    vlc_player = libvlc_media_player_new(vlc_ins); if(vlc_player != NULL)
    { // 通过文件路径创建一个媒体实例,这里是我的测试文件
    //vlc_media = libvlc_media_new_path(vlc_ins, "./test.ts");
    vlc_media = libvlc_media_new_path(vlc_ins, url);
    if(vlc_media != NULL)
    {
    // 解析媒体实例
    libvlc_media_parse(vlc_media);
    // 获取媒体文件的播放长度,  返回 ms
    libvlc_time_t duration = libvlc_media_get_duration(vlc_media); // 此处是获取媒体包含多个的视频和音频轨以及其他类型的轨道信息
    libvlc_media_track_info_t *media_tracks = NULL;
    int trackCount = libvlc_media_get_tracks_info(vlc_media, &media_tracks);
    // 这里是释放内存,但我测试的时候会有问题,还没仔细研究是为何
    //free(media_tracks);  // crash?
    libvlc_media_add_option(vlc_media, SetCache); //libvlc_media_add_option(vlc_media, ":file-caching=5000");
    //libvlc_media_add_option(vlc_media, ":network-caching=5000");
    //libvlc_media_add_option(vlc_media, ":codec=mediacodec,iomx,all");  
    // 把打开的媒体文件设置给播放器
    libvlc_media_player_set_media(vlc_player, vlc_media); // 因为是windows系统,所以需要设置一个HWND给播放器作为窗口
    //libvlc_media_player_set_hwnd(vlc_player, MyWindow(width, height)); // 开始播放视频
    libvlc_media_player_play(vlc_player);

    while (GetMessage(&msg, NULL, 0, 0))     // 消息循环:
    {
    TranslateMessage(&msg);        //转化虚拟按键到字符消息
    DispatchMessage(&msg);        //分派消息调用回调函数
    }
    // 停止
    libvlc_media_player_stop(vlc_player);
    // 释放
    libvlc_media_release(vlc_media);
    }
    // 释放
    libvlc_media_player_release(vlc_player);
    }
    // 释放
    libvlc_release(vlc_ins);
    } //getchar();
    return 0;
    }