libvlc:如何随时捕捉帧

coo*_*fty 5 c libvlc

现在我的方法是:

libvlc_video_set_callbacks //set the lock,unlock,display callback functions
libvlc_media_player_set_position //goto the snap time
libvlc_media_player_play  //start playing
Run Code Online (Sandbox Code Playgroud)

然后在解锁回调函数中调用'libvlc_media_player_stop'停止播放,并通过显示回调函数保存提供者的数据。

这种方法已经成功了几次,但更多时候会使我的整个程序崩溃。我知道它看起来有点愚蠢,但我在libvlc包含文件中找不到任何逐帧控制功能。

Mor*_*enn 5

实际上,libvlc逐帧处理非常糟糕,因为它不是处理流的方式。因此,一帧一帧——当有一些时——是相当笨拙的,而且可能相当丑陋。向前或向后一帧通常是通过计算两帧之间的长度,并跳转到相应的日期时间来实现的。

库中唯一与框架相关的函数libvlc_media_player_next_frame似乎是有条件支持的,而且似乎正在进行一些开发以支持libvlc_media_player_previous_frame.

因此,您的方法可能与其他方法一样好。另一种方法是更换libvlc_media_player_set_positionlibvlc_media_player_set_time,如果你希望能够到你的时间设置为想要毫秒。另一种方法是在捕捉之前放慢播放速度。虽然这些方法都不是真正有效的,但似乎没有任何更简洁的方法来做到这一点。