libvlc_media_player_set_position fails when seeking backward

6

I'm using libvlc 3.0.0 (I've also tried 2.2.0) to capture frames from a h264 encoded mp4 file (does not include sound, only video frames) on Windows 7 with Visual Studio 2012. I can play, pause, stop and seek forward without any problem. But when I try to seek backwards, I run into problems:

  1. Scenario: If I only call libvlc_media_player_set_position (or libvlc_media_player_set_time), it seems like it goes to the position. But vlc stops sending frame received callbacks(in other words, the player freezes) until it reaches the same (or next) frame before the libvlc_media_player_set_position function called.

    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);
        }
    }
    
  2. Scenario: I can make it work only if I first stop the player, then start playing from the beginning.

    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);
        }
    }
    

    The problem with this scenario is, if I keep backward positioning for a while, I get the error (vlc prints the error to the command line) core decoder error: cannot continue streaming due to errors. After this error it stops playing(freezes again), and the next time I try to seek, I get an "Access violation" error: Unhandled exception at 0x... (libavcodec_plugin.dll) in vlctest.exe: 0xC0000005: Access violation reading location 0x00000040

It feels wrong to first restart the video playback for seeking. Am I missing something?

Thanks in advance!

c++
c
windows
visual-studio
libvlc
asked on Stack Overflow Dec 14, 2015 by seleciii44 • edited Jan 2, 2016 by Martin Bonner supports Monica

1 Answer

1

I don't know where did i mess it up before, but i downloaded the current nightly build vlc-3.0.0-git-20151221-0002-win32-debug.zip videolan nightly builds and it works now.

answered on Stack Overflow Dec 29, 2015 by seleciii44 • edited May 11, 2017 by seleciii44

User contributions licensed under CC BY-SA 3.0