У меня есть набор анимаций, которые я могу сделать в Canvas (fabric.js) или WebGL (three.js). Мне нужно записывать их автоматически, на стороне сервера, через скрипт и выводить видеофайл.Лучший способ записи видео ролика Canvas/WebGL в видео?
Анимации включают:
- Фотографии
- Видео (со звуком)
- Другие анимации/эффекты
Я исследовал много в течение последних нескольких месяцев на этом ,
Результаты
1. PhantomJS User + FFmpeg
Run HTML Canvas анимации на обезглавленный браузере (PhantomJS) и запись с FFMPEG. Здесь проблема PhantomJS не поддерживает ни WebGL, ни элемент Video.http://phantomjs.org/supported-web-standards.html
2. Используйте WebSockets для отправки данных обратно на сервер Здесь снова используя DataURL
, нам нужно будет запустить анимацию на браузере (, которые мы не можем, потому что мы должны сделать все, что на сервере) ,
3. Use node-canvas
Это библиотека по TJ Holowaychuk, которая позволяет оказывать HTML Canvas на Node.js. Но у него есть свои ограничения, и я не очень много разбираюсь в этой области. (Если кто-то мог пролить больше света на эту библиотеку)
Если кто-то сделал это раньше или может направить меня где-нибудь полезным.
Все, что нам нужно сделать, это использовать некоторые данные для создания анимаций и записи в видео, все на стороне сервера.
'node-canvas' похоже, для 2d-контекстов. Я нашел пакет «node-webgl», но не смог установить его зависимости. Однако в качестве комментария я должен написать: если вы хотите записать контекст webgl (и использовать его как механизм рендеринга) для вывода видео для себя, 1 на 1, вы можете сделать это на стороне сервера с помощью 'xhr' on локальный сервер. Но если вы хотите вывести видео для каждого подключенного пользователя в Интернете, просто подумайте, что он запрашивает у вашего сервера serverSS одну пару CPU-GPU на посетителя. Я проверял google для «3D-рендеринга на стороне сервера»: сейчас нет ничего серьезного в технологиях 2015 года. – Atrahasis
Также: то, что вы описываете, - это способ использовать webgl как средство рендеринга для себя, поэтому я написал об этом выше. Если вы ищете только способ сделать это на веб-сайте, ваш вопрос будет дублировать http://stackoverflow.com/questions/64291/api-for-server-side-3d-rendering. Но из всех ответов там ничего не приносит ничего ^^ – Atrahasis
@Atrahasis Что делать, если мы хотим только записать Canvas и NOT webGL. Можно ли использовать для этого узел-холст? Поддерживает ли он видео и анимацию? – Abhinav