5

现在我的方法是:

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

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

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

4

1 回答 1

5

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

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

因此,您的方法可能与其他方法一样好。如果您希望能够将时间设置为所需的毫秒,另一种方法是替换libvlc_media_player_set_position为。libvlc_media_player_set_time另一种方法是在捕捉之前放慢播放速度。尽管这些方法都不是真正有效的,但似乎没有任何更清洁的方法可以做到这一点。

于 2013-04-26T07:19:05.477 回答