Как транслировать несколько видеофайлов, давая ему поведение одного видео в C # / WinForms - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть video, который состоит из нескольких files

20190211164440_i0007r000f000.m2ts
20190211164440_i0007r000f001.m2ts
20190211164440_i0007r000f002.m2ts
...

У меня есть несколько таких videos, снятых разными камерами, включенных в несколько разное время, и поэтому;видео не синхронизированы.Я не могу изменять / копировать / удалять файлы, и мне приходится работать с этими файлами такими, какие они есть.

Я пытаюсь создать приложение на C # / WinForms, которое может просматривать такие видео синхронно на основезаданное смещение пользователем.

Таким образом, я бы video 1 загрузил как «родительский» и video 2 загрузил как «дочерний».И скажем, что каждый файл длится всего 5 минут (300 с).Когда я нажимаю кнопку воспроизведения на родительском видео, дочернее видео также должно воспроизводиться, то же самое для паузы.Поскольку видео не синхронизировано, у меня будет «смещение» на дочернем видео.Например: если смещение установлено на -180 (-3 мин) (и родительское видео находится на currentPostion=440 (7:20 / 2:20 в файл № 2), дочернее видео будет на currentPosition=260(4:20 / 4:20 в файл # 1).

У меня уже много кода, содержащего следующие файлы / логику:

  • ControlForm - Основной файл, содержащийкнопки и логику для одновременного воспроизведения / приостановки всех видео и анализа текущего положения родительского видео для дочерних видео.
  • VideoContainer - логика для определения используемого файла. Дочерние видео будут содержать данные смещения ииспользуйте его в сочетании с совокупной позицией родителя, чтобы определить его текущее положение для синхронизации с родителем.
  • MediaPlayerForm - фактическая форма, которая показывает видео, созданное только при необходимости, содержащее объект axWindowsMediaPlayer.Это должно быть в отдельной форме, потому что мы используем 3 экрана для отображения видео.
  • FileContainer - содержащий данные всех отдельных файлов для видео,например, продолжительность, имя, местоположение и т. д.

По мере того, как я все больше и больше углубляюсь в этот проект, он начинает все больше и больше смущать меня.Я пробовал поискать в Google библиотеки, которые выполняют большую часть работы за меня, но я не могу ничего найти.

Идеально было бы, если бы была библиотека, которая делала бы обе вещи для меня, таким образом:

  • Объединение нескольких файлов в одном видео / потоке без фактического изменения файлов
  • Синхронизация нескольких потоков на основе смещения, предоставленного пользователем

Я неЯ думаю, что есть такая продвинутая библиотека, но я думаю, что есть библиотека, которая может объединять несколько файлов в один поток, которая может определить файл для использования на основе совокупной позиции, проанализированной для этого проигрывателя.

Итак, мой вопрос:

Существует ли библиотека для C # / WinForms, которая может объединять несколько видеофайлов в один поток во время выполнения, не изменяя или копируя файлы и способная определить, какой файлиспользовать, основываясь на проанализированном потоке (совокупном) currentPosition.Так что я бы в основном имел дело с одним «видео».Так что моя единственная задача состоит в том, чтобы синхронизировать их, а не выяснять, какой файл использовать, со всеми необходимыми буферизацией / загрузкой и обратными вызовами.

...