Захватить видео в память и воспроизвести с помощью ActionScript? - PullRequest
2 голосов
/ 26 февраля 2012

Это может или не может быть возможно, но вот ситуация: я хочу использовать класс ActionScript 3 Camera для захвата видео с локальной камеры (веб-камера, встроенная камера и т. Д.), А затем воспроизвести это видеов приложении Flash.

Я рассматриваю возможность отправки его на сервер Flash Media Server, а затем потоковую передачу обратно в виде видео по запросу, но в идеале хотелось бы сохранить все это на стороне клиента.для лучшей производительности.

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

Если кто-нибудь знает способ сделать это, я приветствую любой ввод.

Ответы [ 2 ]

3 голосов
/ 02 марта 2012

Хорошо, вот обновление для всех, кто может столкнуться с тем же препятствием, что и я. Мне удалось выполнить то, что я хотел - записать видео, позволить пользователю просмотреть его, а затем загрузить его из одного флэш-приложения - с помощью утилиты, написанной Ли Феларкой (zeropointnine - http://www.zeropointnine.com/) под названием flvEncoder.

Концепция такова:

  1. Запись аудио и видео данных в необработанном формате (во многом как предложил Валентин Симонов)
  2. Передать данные в flvEncoder для кодирования в формате Flash FLV и получить обратно ByteArray. Я знаю, что излишне говорить Flash FLV, но я говорю это так, потому что Flash и Adobe Media Player, похоже, являются единственными вещами, способными интерпретировать результат.
  3. Создайте экземпляр NetStream и переведите его в режим генерации данных, используйте метод appendBytes () для передачи закодированных данных в объект Video, связанный с входным NetStream.
  4. Используйте FileReference.upload () для отправки данных на сервер в HTTP-запросе.

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

0 голосов
/ 26 февраля 2012

Самый простой способ - использовать медиа-серверы FMS, Wowza или Red5. Вы просто используете NetStream для отправки данных на ваш сервер, сохранения фильмов и потоковой передачи обратно.

Также я полагаю, что это единственный надежный способ сделать это. Объекты Camera, Video или NetStream не имеют доступа к текущим байтам видео. Что вы можете сделать, это добавить экземпляр Video в вашу камеру и рисовать его в растровом изображении каждые 1/24 секунды. После этого вам все равно придется кодировать данные или вы очень быстро исчерпаете память. Здесь я не уверен, есть ли какие-либо кодеки flv / h264, сделанные с as3 доступным. Но в любом случае, держу пари, это будет медленно.

...