libvlc,拍摄快照给出:核心流错误:无法预先填充缓冲区

时间:2016-12-13 21:07:08

标签: c++ mutex libvlc

我已经实现了libvlc SDL2 example,它运行得很好。我更改了它,以便播放视频而不是流。现在,我想做的就是拍摄视频的快照。代码如下所示:

libvlc_video_set_format(mp, "RV16", VIDEOWIDTH, VIDEOHEIGHT, VIDEOWIDTH * 2);
libvlc_media_player_play(mp);
libvlc_video_set_callbacks(mp, lock, unlock, display, &context);
libvlc_video_take_snapshot(mp, 0, "C:\\temp\\test3.png", width, height);

这不会产生快照但会执行并退出健康状态。在控制台上我得到了

core stream error: cannot pre fill buffer

这让我很困惑。由于功能解锁中的互斥锁已解锁,或者我出错了什么,应该填充缓冲区?

如果我在媒体播放和快照调用之间添加sleep()1秒,则可以正常工作。看起来它需要更多的时间以某种方式填充缓冲区。但是在这一秒钟内,视频已经开始运行,我希望我的快照在它开始播放后立即进行。

希望有人可以帮助我。

祝你好运, 专利

0 个答案:

没有答案