Можно ли получить точные временные метки для кадров в видеофайле из VLC?

Я хочу использовать VLC в качестве основы для видеопроигрывателя в своем приложении, написанном на С# (поскольку VLC является одним из немногих игроков, которые могут правильно декодировать формат Im, с которым работает Im), но основные задачи, которые мне нужны, выполните следующие действия:

  • Возможность просмотра отдельных кадров в видеофайле, как вперед и назад.
  • Отображение точной метки времени для каждого кадра до миллисекунды, а также возможность передачи метки времени приложение.

Прямо сейчас я делаю это с помощью расширения VLC LUA script, но время, которое VLC возвращает через vlc.var.get(ввод, "время" ), не имеет точности и может отличаться для одного и того же кадра в одном и том же видео файл через несколько файлов. Просмотр рамки не работает слишком надежно. Кроме того, полученные таким образом значения не могут автоматически передаваться в другое приложение.

Я попытался использовать обертку LibVLC.NET для libVLC, но я все еще не мог перемещаться между кадрами, а возвращаемые значения миллисекундного счета были довольно странными. Его почти как VLC (libVLC) не возвращает фактическое значение времени во время воспроизведения, а скорее какое-то округленное значение, значение с существенной задержкой при чтении с точностью до миллисекунды. Стандартный интерфейс VLC не может отображать точные значения времени до миллисекунды и не просматривать между кадрами.

Есть ли жизнеспособный способ выполнить две вышеупомянутые задачи с помощью VLC, как-то запустить VLC из приложения, написанного с использованием .NET? Или мне нужно посмотреть другие варианты?

Ответ 1

Я не уверен, что вы можете сделать это с помощью VLC. Но вы можете использовать этот пример, который использует очень хорошую структуру под названием ffmpeg Я почти уверен, что вы сможете играть в свой поток и перемещаться. Кроме того, существует еще одно решение, которое вы можете использовать, я должен сказать, что я не знаком с ним, но его стоит проверить.

В основном попытайтесь найти .Net-реализацию видеопроигрывателя вместо работы VLC