I’m looking to use VLC as the foundation for a video player within my application written in C# (since VLC is one of the few players that can properly decode the format I’m working with), but the primary tasks that I need it to perform are:
- Ability to browse between separate frames in a video file, both forward and back.
- Displaying a precise timestamp for each frame down to the millisecond, and the ability to relay the timestamp to an application.
Right now I’m doing this by means of a VLC extension LUA script, but the time VLC returns via vlc.var.get(input, “time”) lacks precision and can differ for the same frame in the same video file across multiple file readings. The frame browsing doesn’t work too reliably either. Plus, the values received in this way cannot be automatically relayed to another application.
I tried using the LibVLC.NET wrapper for libVLC, but I still couldn’t browse between frames, and the millisecond count values returned were rather odd. It’s almost like VLC (libVLC) doesn’t return an actual time value during playback but rather some sort of rounded value, a value with substantial delay when reading with precision down to the millisecond. The standard VLC interface can neither display precise time values down to the millisecond, nor browse between frames.
Is there any viable way to perform the two aforementioned tasks with VLC by somehow running VLC from an application written with the use of .NET? Or should I look into other options?