如何在VLC视频滤镜模块中检索当前播放时间

时间:2015-01-01 13:24:28

标签: video vlc

我想操作位于预定义播放时间范围内的图像(例如,从3秒标记到6秒标记)。但是,我无法检索视频过滤器模块中的播放时间。 struct picture_t包含一个成员“date”,它保存显示日期,但不包含播放开始时从零开始的时间戳。显然我无法确定当前播放位置是什么,尤其是在用户使用搜索栏执行搜索操作之后。

那么,如何确定“视频滤波器”模块中的当前播放位置,即使在搜索操作之后也保持一致?

非常感谢任何帮助!

编辑: 以下是将帧从60秒降至120秒的示例代码。如果我确实寻求操作,这些60和120秒的标记将不再有效。

picture_t *Filter( filter_t *p_filter, picture_t *p_pic )
{
    filter_sys_t *p_sys = p_filter->p_sys;
    // save the start date
    if ( p_sys->start == -1 )
        p_sys->start = p_pic->date;    
    if ( p_pic->date > p_sys->start + 60000000 && p_pic->date < p_sys->start + 120000000)
    {
        picture_Release( p_pic );
         return NULL;
    }
    return p_pic;
}

2 个答案:

答案 0 :(得分:0)

我发布答案是为了别人的利益。

目前,这在VLC中是不可能的。相反,这可以使用分路器模块来完成,因为分路器知道正在播放的音轨的播放位置。它还可以使用VLCcore中实现的Observer模式与任何其他模块(例如视频过滤器2)进行通信。关于VLC对象变量的更多信息,请关注here

希望有所帮助!

答案 1 :(得分:0)

我的问题有不同的解决方案。

但这不能直接获得播放时间。但它将帧数转换为时间。 所以你不必导入任何功能。

目前我尝试了以下实施工作:

filter_sys_t *p_sys = (filter_sys_t *)p_filter->p_sys;
strm_time = 0.04 * (double)(p_sys->i_frames);
// 0.04 implies the 25 frames per minute