2015-12-13 4 views
1

Так что я делаю сайт, и у меня есть потрясающее видео звездных войн с зеленым фоном. И я хочу удалить зеленый фон (цветной ключ) и вставить видео поверх фона сайта html5.Как удалить зеленый фон видео и вставить это видео на фоне html5-сайта, используя только html5 и javascript?

Я искал в течение нескольких часов (не jokking), и я могу найти только сложный код, который использует изображения ...

Так что я хотел бы заменить зеленый видео фон с ничего, а затем вставить его на фоне веб-сайта.

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

+0

https: // www.youtube.com/watch?v=eTgFUNUmxRo это оригинальное видео, может быть, кто-то может помочь мне лучше с этим? – Programmer123

+0

Возможно.Вы можете нарисовать видео на холсте и манипулировать пикселями, которые вы рисуете. Вот учебник (видеоизображение внутри холста, манипуляция с пиксельным изображением) -> http://html5doctor.com/video-canvas-magic/ –

+0

Вам нужно показать свой код. Вопрос, как сейчас, не подходит для переполнения стека. –

ответ

1

Начальная информация:video element может быть источником изображения для холста html5. Это означает, что кадр видео можно нарисовать (и манипулировать) холстом.

Обзор: Метод context.getImageData получит данные о пикселях RGBA в массиве. После изменения данных пикселя массива context.putImageData вернет измененные пиксели на холст.

A Plan Используйте CSS для размещения холста html5 над фоном сайта. Используйте этот холст для рисования видеокадров над сайтом (зеленоватые пиксели видео сделаны прозрачными, что показывает фон сайта).

(некоторые сборки & обучения требуется с вашей стороны):

Расположите холст элемент html5 покрытия фона сайта.

Внутри время цикла (requestAnimationFrame):

  1. Очистить холст: context.clearRect,
  2. Draw видеокадра на холст: context.drawImage(video,0,0),
  3. Получить данные пикселей из холста: context.getImageData,
  4. Проверьте каждый пиксель на «зеленый-ish-ness»: if(green>220 && red<20 && blue<20),
  5. Если пиксель зеленоватый, сделайте его прозрачным: (alpha=0),
  6. Верните измененные пиксели на холст: context.putImageData,
  7. Повторите на # 1, пока видео не закончится.

Ссылки, чтобы помочь с вашего обучения

StackOverflow перед пост о # 2: Put the video tag on the Canvas tag

Stackoverflow до сообщение о # 3-6: Looping through pixels in an image

+0

@markeE, но как определить диапазон цветов, например. для фона с синим цветом, я попытался это сделать, но без успеха :) – Motoo

+0

@Motoo Просто отрегулируйте шаг 4, чтобы проверить свою форму «сине-иш-нс». Хотя я понятия не имею, каков ваш прецедент, вы можете начать с 'rec <20 && green <20 && blue> 220'. :-) – markE

+0

Лично, следующий метод с большими/меньшими значениями не работал для меня вообще, и это очень опасно для использования. Поскольку относительно хорошее зеленое значение может иметь место даже при очень низких значениях, но могут возникать и другие типы оттенков. Этот метод «зеленый»> красный + обратная_толерантность && зеленый> синий + допуск »для меня работал лучше, но все еще очень плохо. Разве нет более точного? Я думаю, что формат HSL может помочь больше. – general656

Смежные вопросы