首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在视频播放器上设置时间触发器

在视频播放器上设置时间触发器
EN

Stack Overflow用户
提问于 2019-07-01 09:56:38
回答 3查看 313关注 0票数 0

背景

我有一个文本,我想显示在文本框,每当视频是在一定的时间间隔,说(00:02:00-00:04:00 "Hello there")

这些文本框只应在视频以特定时间间隔播放时显示。如果我倒带或跳过视频到不同的时间,则应生成/销毁文本框,具体取决于当前时间是否在间隔内。

我在文档中搜索了ffplay和vlc实现此功能的文档。

我已经尝试过的

播放:我的策略是继续在STDERR中显示视频的当前时间,并检查当前时间是否在间隔之内。

LibVLC: LibVLC支持异步事件,但不支持取决于视频播放时间的那种事件。

我的问题

1.是否应继续轮询当前视频时间或设置回调/触发器功能?

2.是否可以将视频的当前播放时间作为变量,并相应地创建回调函数?

注意:我知道字幕会做同样的事情,但是我希望文本位于不同的窗口。文本框应该与我使用的视频播放器解耦。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-07-01 14:32:51

如果您感兴趣的是当前的视频时间或位置,投票是非常好的。LibVLC确实为Media Player Position ChangedMedia Player Time Changed实现了回调,但是对于执行非常有规律的事情(比如每秒钟查询一次),作为异步事件处理它没有多大价值。

设置一个计时器,每秒钟查询一次(或半秒,取决于所需的精度),并调用:

代码语言:javascript
复制
libvlc_time_t current = libvlc_media_player_get_time(my_player);

注意,结果以毫秒为单位。显然,您必须保留对您的my_player的引用,但我想您已经这样做了。另外,在我的经验中,libvlc_media_player_get_time报告的时间可能并不总是非常精确。但播放应该没问题。

票数 2
EN

Stack Overflow用户

发布于 2019-07-02 08:35:04

你只需要一个subtitle文件。

一个带有视频名称但以.srt结尾的文件

Myvideo.srt,包含:

代码语言:javascript
复制
1
00:02:00,001 --> 00:04:00,001
Hello There!

Vlc应该自动拿起它。

可能需要告诉你这件事。

ffplay -ss 00:01:55.00 -i Myvideo.mp4 -vf subtitles="./Myvideo.srt `

票数 0
EN

Stack Overflow用户

发布于 2022-07-28 13:04:12

我在我的播放器表单中订阅LibVLCSharp.WinForms.VideoView.MediaPlayer实例的LibVLCSharp.WinForms.VideoView.MediaPlayer事件。

首先,我有一个定义如下的对象:

代码语言:javascript
复制
public class VidMark
{
    public long Beg { get; set; } //Number of milliseconds of the beginning 
    public long End { get; set; } //Number of milliseconds of the end
    public string Desc { get; set; } //Text to display
    public int Rank { get; set; } = 0; //A rank value for how user likes it
}

我为每个视频都保留了这些标记的列表。我用彩色标记在视频的时间线上显示他们。在播放视频和发生PositionChanged事件时,我检查当前时间是否在这些标记中。如果是这样的话,我会向用户显示描述和排名。

代码语言:javascript
复制
//longMS = milliseconds into video derived from e.Position of the event
foreach (VidMark VM in _CurrentVidMarks)
{
    if (VM.Beg <= longMS && longMS < VM.End)
    {
        //In a VidMark, so show it in the app
        SetCurrentVidMarkAndControls(VM);
        break;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56833579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档