Проведя много исследований различных вариантов и опробовав несколько вариантов, я все-таки выбрал VLCJ, но здесь есть одна загвоздка - все вещи VLCJ сделаны вне виртуальных машин процесса.Это немного сложнее в настройке (см. здесь , чтобы узнать, как я это сделал), но после этого вы можете бросить все, что вам нравится, и все работает отлично (в настоящее время используется 3 игрока из процесса без проблем со стабильностью).)
Ксугглер был великолепен, но, к сожалению, слишком низкий уровень для меня - огромное количество изобретений колеса (и того хуже), необходимых только для того, чтобы начать воспроизведение с поиском работы, немного оттолкнуло меня;Я чувствовал, что это займет вечность, чтобы решить все проблемы с этим.Для кодирования / транскодирования / других низкоуровневых видео работ, хотя я бы искренне рекомендовал это - лучше всего без сомнений.
Предостережения с моим выбранным подходом?Что ж, если внешние виртуальные машины не будут отключены явно, они продолжат воспроизведение видео в фоновом режиме даже после завершения работы приложения, и отладка становится все труднее при таком подходе.Я также еще не проверял, что он работает на Mac, и мое первоначальное предложение, вероятно, не потому, что из того, что я слышал, MacOS не позволяет одному процессу контролировать окно другого без явного разрешения с помощью собственного кода.Это должно быть возможно, если немного поработать.
Как побочный эффект от проекта, над которым я сейчас работаю, я могу посмотреть, смогу ли я обернуть всю эту функциональность вне процесса в простой Javaвидео каркас, который использует VLCJ под.Если кому-то это будет интересно (я не могу ничего обещать, кроме того, что чем больше интерес, тем больше у меня шансов поработать над этим), не стесняйтесь, дайте мне знать!
Итак, после моего исследования иВыводы, я бы рекомендовал использовать VLCJ (но определенно с использованием проигрывателей вне процесса), если вы просто хотите воспроизводить / записывать / передавать потоковое видео, и Xuggler, если вы хотите работать с любым видео низкого уровня ссами кодеки.На момент написания статьи просто не было хорошего, чистого Java-решения, и, вероятно, оно останется таким какое-то время - к счастью, хотя можно получить достойные результаты с кроссплатформенными нативными библиотеками.Это просто требует гораздо больше работы!