Веб-сайт потокового видео - PullRequest
3 голосов
/ 04 марта 2010

Мы с нетерпением ждем развития очень интересного портала сообщества, который помог бы пользователю транслировать свои живые видео в сообществе.Я проверял такие сайты, как ustream.tv, justin.tv и спрашивал себя, какую / как технологию они используют для этого.

В последние несколько дней я провожу много исследований, проверяя средусделать это эффективно и найти некоторых ведущих компаний в этой области, таких как Ooyala.com, brightcove.com, предоставляющих серверы / технологии для беспрепятственной трансляции видео по всему миру.Я скоро зарегистрируюсь у любого из этих провайдеров.

Так что мой вопрос в том, как именно мой сайт будет ловить с помощью прямой трансляции с камеры пользователей, отправлять поток на ooyala / brightcove и дальше транслировать его.остальным пользователям сообщества.

до сих пор я выяснил, что Flash 8 / Flex действительно предоставляет некоторые входные данные для извлечения потока с камеры пользователя.

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

Заранее спасибо.DEV-друпал

1 Ответ

0 голосов
/ 05 марта 2010

Самый простой способ - использовать Flash / Flex Client с Red5 http://osflash.org/red5

Flash Player имеет метод для использования видеокамеры, а сервер Red5 является Flash-сервером с открытым исходным кодом, который будет записывать потоки клиентов.

Я рекомендую настроить Red5 и поиграть с ним. Делает все что нужно. Просто посмотрите на API и начните писать тестовые приложения.

КАК ПОЛУЧИТЬ ВИДЕО ОТ ПОЛЬЗОВАТЕЛЬСКОЙ КАМЕРЫ:

package {
    import flash.display.Sprite;
    import flash.media.Camera;
    import flash.media.Video;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.utils.Timer;
    import flash.events.TimerEvent;
    import flash.events.StatusEvent;
    import flash.events.MouseEvent;
    import flash.system.SecurityPanel;
    import flash.system.Security;

    public class Camera_getCameraExample extends Sprite {
        private var myTextField:TextField;
        private var cam:Camera;
        private var t:Timer = new Timer(1000);

        public function Camera_getCameraExample() {
            myTextField = new TextField();
            myTextField.x = 10;
            myTextField.y = 10;
            myTextField.background = true;
            myTextField.selectable = false;
            myTextField.autoSize = TextFieldAutoSize.LEFT;    

            cam = Camera.getCamera();

            if (!cam) {
                myTextField.text = "No camera is installed.";

            } else if (cam.muted) {
                myTextField.text = "To enable the use of the camera,\n"
                                 + "please click on this text field.\n" 
                                 + "When the Flash Player Settings dialog appears,\n"
                                 + "make sure to select the Allow radio button\n" 
                                 + "to grant access to your camera.";

                myTextField.addEventListener(MouseEvent.CLICK, clickHandler);

            }else {
                myTextField.text = "Connecting";
                connectCamera(); 
            }

            addChild(myTextField);

            t.addEventListener(TimerEvent.TIMER, timerHandler);
        }

        private function clickHandler(e:MouseEvent):void {
            Security.showSettings(SecurityPanel.PRIVACY);

            cam.addEventListener(StatusEvent.STATUS, statusHandler);

            myTextField.removeEventListener(MouseEvent.CLICK, clickHandler);
        }

        private function statusHandler(event:StatusEvent):void {

            if (event.code == "Camera.Unmuted") {
                connectCamera(); 
                cam.removeEventListener(StatusEvent.STATUS, statusHandler);
            }
        }

        private function connectCamera():void {
                var vid:Video = new Video(cam.width, cam.height);
                vid.x = 10;
                vid.y = 10;
                vid.attachCamera(cam);
                addChild(vid);    

                t.start();
        }

        private function timerHandler(event:TimerEvent):void {
            myTextField.y = cam.height + 20;
            myTextField.text = "";
            myTextField.appendText("bandwidth: " + cam.bandwidth + "\n");
            myTextField.appendText("currentFPS: " + Math.round(cam.currentFPS) + "\n");
            myTextField.appendText("fps: " + cam.fps + "\n");
            myTextField.appendText("keyFrameInterval: " + cam.keyFrameInterval + "\n");
        }
    }
}

КАК ОТПРАВИТЬ ВИДЕО В ЯРКУЮ КРЫШКУ

У них есть API, только что прочитанный.

...