是否可以从VLC获取视频文件中帧的精确时间戳?

Reg*_*egs 10 .net c# vlc libvlc

我希望使用VLC作为我在C#中编写的应用程序中的视频播放器的基础(因为VLC是能够正确解码我正在使用的格式的少数播放器之一),但是我需要它的主要任务表演是:

  1. 能够在视频文件中向前和向后浏览不同的帧.
  2. 显示每个帧的精确时间戳,直到毫秒,以及将时间戳中继到应用程序的能力.

现在我通过VLC扩展LUA脚本执行此操作,但VLC通过vlc.var.get返回的时间(输入,"时间")缺乏精度,并且可能因同一视频文件中的同一帧而异文件读数.帧浏览也不太可靠.另外,以这种方式接收的值不能自动转发到另一个应用程序.

我尝试使用libVLC的LibVLC.NET包装器,但我仍然无法在帧之间浏览,并且返回的毫秒计数值相当奇怪.这几乎就像VLC(libVLC)在回放期间没有返回实际时间值,而是某种舍入值,当读取精度低至毫秒时,该值有很大的延迟.标准VLC接口既不能显示精确的时间值,也不能显示毫秒,也不能在帧之间浏览.

有没有可行的方法通过以某种方式从使用.NET编写的应用程序运行VLC来执行VLC的上述两个任务?或者我应该考虑其他选择?

Rob*_*bob 0

我不确定你是否可以使用 VLC 做到这一点。但是您可以使用这个示例,该示例使用非常好的框架,称为ffmpeg 我几乎确定您将能够播放流并进行导航。此外,您还可以使用另一种解决方案 ,我不得不说我不熟悉它,但值得检查。

基本上尝试找到视频播放器的.Net 实现而不是工作 VLC