我正在使用libvlc 3.0.0(我也尝试过2.2.0)在Windows 7和Visual Studio 2012上从h264编码的mp4文件(不包括声音,仅包括视频帧)中捕获帧。我可以播放,暂停,停下来寻求前进没有任何问题。但是,当我尝试向后搜索时,就会遇到问题:

  • 场景:如果我只调用libvlc_media_player_set_position(或libvlc_media_player_set_time),似乎就可以了。但是vlc停止发送帧接收到的回调(换句话说,播放器卡住),直到到达libvlc_media_player_set_position函数之前的相同(或下一帧)帧为止。
    counter = 0;
    while (true)
    {
        sleep(40); // 25 hz
        ++counter;
        if(counter % 100 = 0)
        {
            // assuming current_position > 0.1f
            libvlc_media_player_set_position(p_mi, 0.1f);
        }
    }
    
  • 场景:只有先停止播放器,然后从头开始播放,我才能使它起作用。
    counter = 0;
    while (true)
    {
        sleep(40); // 25 hz
        ++counter;
        if(counter % 100 = 0)
        {
            // assuming current_position > 0.1f
            libvlc_media_player_stop(p_mi);
            libvlc_media_player_play(p_mi);
            libvlc_media_player_set_position(p_mi, 0.1f);
        }
    }
    

    这种情况下的问题是,如果我保持向后定位一段时间,则会收到错误消息(vlc将错误打印到命令行)core decoder error: cannot continue streaming due to errors。发生此错误后,它停止播放(再次卡住),并且下次尝试查找时,出现“访问冲突”错误:Unhandled exception at 0x... (libavcodec_plugin.dll) in vlctest.exe: 0xC0000005: Access violation reading location 0x00000040

  • 首先重新启动视频播放以进行搜索感觉不对。我想念什么吗?

    提前致谢!

    最佳答案

    我不知道我以前在哪里弄乱它,但是我下载了当前的每晚生成vlc-3.0.0-git-20151221-0002-win32-debug.zip videolan nightly builds,并且现在可以使用了。

    关于c++ - 向后搜索时libvlc_media_player_set_position失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34262277/

    10-14 02:25