2012-02-25 3 views
2

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

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

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

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

+0

Я не использовал его сам, но думаю, что HTTP-потоковая передача APMS позволяет получить данные на клиенте как ByteArray ... и затем класс видео во флэш-памяти позволяет нажимать этот поток данных ... Думаю, это должно помочь – catholicon

ответ

3

Хорошо, это обновление для всех, кто может быть против того же препятствия, которым я был. Я смог выполнить то, что хотел, - записать видео, разрешить пользователю его просматривать, а затем загружать из одного флеш-приложения, используя утилиту, написанную Ли Феларкой (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

Приятная находка. Хотя Adobe меняет Alchemy на отдельный продукт, поэтому это решение может сломаться в 11.2. –

+0

Класс flvEncoder включает в себя чистый кодер ActionScript, алкемический кодер не является обязательным. Насколько я знаю, он все равно должен двигаться вперед ... –

0

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

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

+0

Я хотел, чтобы пользователь мог предварительно просмотреть видео, прежде чем загружать его в FMS, но мне просто нужно будет работать с загрузкой видео и потоковым воспроизведением. Спасибо! –