Для записи веб-камеры с помощью Flex строго необходим медиа-сервер (FMS, Red5, Wowza и т. Д.)? - PullRequest
5 голосов
/ 13 июня 2009

Я пытаюсь реализовать гибкое приложение, которое сможет записывать видео с веб-камеры и затем загружать его на сервер.

Я нашел только учебные пособия и примеры, для которых требуется работающий медиа-сервер, такой как Red5, Flash Media Server и Wowza, и открытый поток rtmp на сервер.

Однако я хочу знать, возможно ли записать видео локально, а затем отправить его на сервер с помощью простого HTTP-запроса.

Есть ли где-нибудь учебник, который показывает, как это сделать? Я действительно новичок в разработке гибких систем и хотел бы получить пошаговую процедуру: P

Ответы [ 3 ]

2 голосов
/ 13 июня 2009

Есть шанс:)

haxevideo - это сервер FMS / Red5, разработанный в Haxe . Разница с ними в том, что они очень легкие и не требуют какой-либо установки.

Итак, вы можете перераспределить его вместе с вашим приложением, чтобы вы могли действительно записывать аудио и видео локально в файл FLV.

Не уверен, что вы помните Screenweaver, но последняя версия была разработана с использованием Haxe и называется SWHX. На вершине SWHX вы действительно создали оболочку под названием HippoHX , и HippoHX выполнит все настройки за вас. Если вы скачаете его, есть пример, который делает именно то, что вам нужно (запись в локальный файл).

Как только вы записали файл, оставшийся бит будет загружен на сервер, но это не страшно.

Дайте ему знать, и если вы обнаружите какие-либо проблемы, отправьте мне электронное письмо или присоединитесь к (довольно довольно) списку рассылки для получения помощи.

Что-нибудь, дайте мне знать,

Ура!

Juan

2 голосов
/ 13 июня 2009

Тебе не повезло с этим. Вам понадобится какой-нибудь потоковый сервер. Flex не имеет возможности записывать видео на локальный диск пользователя или любой другой диск.

0 голосов
/ 02 июня 2014

Чтобы кодировать FLV в ByteArray, начните с создания экземпляра ByteArrayFlvEncoder. Остальное похоже на последнюю версию, но теперь вы можете вызывать updateDurationMetadata (), когда вы закончили обновлять свойство duration в метаданных. Наконец, вызовите kill (), чтобы подготовить объект для сборки мусора:?

var baFlvEncoder:ByteArrayFlvEncoder = new ByteArrayFlvEncoder(myFrameRate);

baFlvEncoder.setVideoProperties(myWidth, myHeight, VideoPayloadMakerAlchemy);
// (Omit the 3rd argument to NOT use Alchemy if you're targeting Flash 9)
baFlvEncoder.setAudioProperties(BaseFlvEncoder.SAMPLERATE_44KHZ, true, false, true);

baFlvEncoder.start();

baFlvEncoder.addFrame(myBitmapData, myAudioByteArray);
baFlvEncoder.addFrame(myBitmapData, myAudioByteArray); // etc.

baFlvEncoder.updateDurationMetadata();

saveOutMyFileUsingFileReference( baFlvEncoder.byteArray );

baFlvEncoder.kill(); // for garbage collection

И

Чтобы закодировать FLV непосредственно в локальный файл (в AIR), создайте экземпляр FileStreamFlvEncoder со ссылкой на файл и откройте открытый FileStream, а затем закройте его, когда все будет сделано:?

var myFile:File = File.documentsDirectory.resolvePath("video.flv");
var fsFlvEncoder:FileStreamFlvEncoder = new FileStreamFlvEncoder(myFile, myFrameRate);
fsFlvEncoder.fileStream.openAsync(myFile, FileMode.UPDATE);

fsFlvEncoder.setVideoProperties(myWidth, myHeight, VideoPayloadMakerAlchemy);
fsFlvEncoder.setAudioProperties(BaseFlvEncoder.SAMPLERATE_44KHZ, true, false, true);

fsFlvEncoder.start();

fsFlvEncoder.addFrame(myBitmapData, myAudioByteArray);
fsFlvEncoder.addFrame(myBitmapData, myAudioByteArray); // etc.

fsFlvEncoder.updateDurationMetadata();

fsFlvEncoder.fileStream.close();

fsFlvEncoder.kill();

Для более подробной информации используйте ссылку ниже:

http://www.zeropointnine.com/blog/updated-flv-encoder-alchem/

...