Быстрое вступление
Я создаю танцевальную игру в браузере, которая использует Tensorflow.js для анализа движений человека и сравнит эти движения с песней, которой они танцуют.
Чтобы сделать это как можно более простым для людей, я бы хотел, чтобы они могли вставить ссылку на YouTube танца, который они хотели бы узнать, если его еще не существует в игре. Игра проанализирует это с помощью tensorflow.js ‘ Movenet и генерируйте данные о позе и клавишах (PKD) для каждого кадра в видео.
Затем мы можем использовать этот PKD и сравнить его с живым PKD из веб -камеры игрока, чтобы увидеть, насколько хорошо они соответствуют ожидаемым танцевальным движениям.
Эта проблема
Когда вы внедряете видео на YouTube на другой веб -сайт, оно загружено внутри элемент. Это iframe в основном дает вам окно в код другого места; В этом случае это YouTube. Он загружает все, что вам нужно, чтобы посмотреть видео на YouTube внутри iframe, не нуждаясь на YouTube.com.
Это звучит великолепно, но вот вылов: вы не можете получить доступ или изменить что -либо в этом iframe, если это не на том же сайте, на котором вы сейчас находитесь. Это означает, что если вы не на YouTube, но вы смотрите встроенное видео на YouTube, вы не можете получить доступ к вкусностям внутри iframe, например, фактического элемент.
Tensorflow.js нужен Элемент, чтобы проанализировать движения видео.
В этом заключается проблема: Как получить видео от YouTube в tensorflow.js?
Трудности
Существует два основных способа встроить видео на YouTube на свой собственный веб -сайт: вы можете либо скопировать URL -адрес Embed (когда вы нажимаете «Поделиться» на видео), либо использовать Встроенные игроки API Анкет
Встроенные игроки API дают вам гораздо больше контроля над такими, как различные свойства (время тока, продолжительность, продолжительность, приостановленную и т. Д.) И методы (воспроизводить видео, пауза, видео, и т. Д.). Хотя это может показаться великолепным, мы не можем получить доступ к необработанному видеопотоку, содержащемуся в Элемент, потому что это в недоступном iframe.
Встроенные игроки API будут работать, если бы нам не пришлось запустить Tensorflow.js, и эта возможность обсуждается позже в разделе законности.
Я также осмотрел другие способы извлечения видеопотока из видео на YouTube.
Сначала был Lite-youtube-Embed Анкет Этот пакет позволяет вам встраивать видео на YouTube, как обычно, но они рендеринг Действительно быстро. Я думал, что здесь может быть какая -то обмана, которую я мог бы использовать, но я не смог найти ничего полезного.
Далее было YouTube-to-HTML5-Loader , что звучит точно так же, как нам нужно. И неудивительно, что это именно то, что нам нужно!
Но есть улов: в настоящее время он сломан из -за Ограничение скорости YouTube Анкет Это то, что может быть очень сложно, и я не хочу полагаться на то, что может сломаться в любой момент с новыми обновлениями или изменениями на YouTube.
Решение
YouTube-DL Это отличный способ скачать видео на YouTube. Есть ли какой -нибудь способ использовать это, чтобы игроки загружали видео, чтобы они могли запускать видео через Tensorflow.js и Есть гладкий мгновенный воспроизведение?
Ага.
Кажется, у игрока нет хорошего способа просто загрузить видео на YouTube из браузера, но я имею в виду обходной путь. Я запущу мой сервер скачать видео для них и предоставить ссылку для его загрузки.
Но стоимость хранения может быстро увеличиться, если есть много видео, загружаемых и хранящихся! Таким образом, компромисс здесь – хранить каждое видео, загруженное для Ограниченный количество времени, скажем, 4 часа, а затем удалите его. Если клиент снова понадобится видео в будущем, оно будет повторно загружено на сервер. Максимальный предел размера файла также должен быть включен в случай, если много видео загружается.
Однако еще одна вещь: мы не хотим, чтобы всплывающее окно для загрузки файла для пользователей при загрузке видео! Это усложнит ситуацию и сделает видео недоступным для браузера. Вместо этого мы можем использовать запрос AJAX, чтобы загрузить его в качестве Blob и сохранить его в IndexedDB, все без скачивания всплывающего окна! Я нашел этот пост Во время исследования, это кажется хорошей отправной точкой.
Конечный поток может немного выглядеть так:
- Пользователь встает на YouTube URL в игру.
- Сервер игры проверяет несколько вещей:
- Это видео уже доступно для скачивания? (Если так, просто подайте это)
- Достаточно ли доступного места для загрузки этого видео? (Если нет, поместите в очередь ожидания, пока не будет доступно пространство)
- После проверки игровой сервер загружает видео с YouTube.
- Сервер игры отправляет клиенту ссылку на видео, а затем клиент загружает видео.
- Теперь клиент может мгновенно воспроизводить видео всякий раз, когда они играют или редактируют песню. Нет больше времени ожидания! (За исключением загрузки PKD и метаданных, которые будут храниться на игровом сервере)
Это законно?
Загрузка видео на YouTube на ваш компьютер законно?
Согласно YouTube , это не так. Не без разрешения от YouTube и владельца авторского права видео.
Это не вся история, хотя. Также есть Справедливое использование Политика, которая обеспечивает серую область при работе с этими видео.
Подходит ли эта танцевальная игра в браузере Справедливое использование доктрина? Сейчас трудно ответить.
Принимая во внимание все эти факторы, есть несколько шагов, которые можно сделать, которые полностью устранят юридические вопросы:
- При просмотре песни для воспроизведения на веб -сайте, транслируйте только видео с YouTube, которые позволяют встраивать. Используйте предварительно сгенерированный PKD во времени с видео на YouTube.
- При создании новой песни через редактор вам потребуется загрузить локальное видео. Видео будет использоваться только в браузере и не будет загружено ни на один внешний сервер. Вы можете получить это видео с помощью различных средств, и оно должно быть связано с существующим видео на YouTube (для трансляции в приведенном выше сценарии). Независимо от того, загружаете ли вы и используете видео на YouTube, которое у вас нет, зависит от вас, но оно используется только в целях создания и не будет сохранена после того, как вы создали песню с его PKD.
Имея в виду эти потенциальные решения, почему бы не внедрить их для начала?
- Редактор простой использование: если вы хотите изучить крутой танец, который вы видели на YouTube, вам сначала придется выяснить, как загрузить это видео, а затем загрузить его. Есть много тенистых сайтов загрузки на YouTube.
- Главность и управление игровым процессом: при воспроизведении песни ей придется сначала загрузить встроенное видео на YouTube. Видео может воспроизводить рекламу, что может вызвать проблемы. API Player YouTube также ограничен и может не иметь достаточно хорошего контроля над воспроизведением видео. Весь пользовательский интерфейс YouTube также будет отображаться поверх видео, что может нарушить визуальную обратную связь или вызвать другие проблемы. Потокая и загрузка видео во время игры также может привести к задержке и заиканиям в зависимости от качества соединения и скорости.
- Пользовательская база: я, вероятно, буду единственным, кто использует это, так зачем прыгать через больше обручей, чем я должен? Я начну с метода, который сейчас кажется лучше, и в будущем вернется в будущем.
И поэтому, хотя видео на YouTube не совсем смешиваются с TensorFlow.js, иногда вам просто нужно поместить их обоих в блендер, чтобы получить смузи. ✨
Оригинал: “https://dev.to/benank/youtube-videos-don-t-mix-with-tensorflow-js-1iak”