我已经实现了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秒,则可以正常工作。看起来它需要更多的时间以某种方式填充缓冲区。但是在这一秒钟内,视频已经开始运行,我希望我的快照在它开始播放后立即进行。
希望有人可以帮助我。
祝你好运, 专利