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:
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);
}
}
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!
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With