2010-03-04 8 views
3

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

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

Итак, мой вопрос в том, как именно мой сайт будет захватывать живой канал от пользователей камеры, отправлять поток на ooyala/brightcove и далее передавать его остальным пользователям сообщества.

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

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

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

+1

Думал, что это лучше было помечено как Flash и Flash Media Server вместо Flex или PHP. Люди, просматривающие метки Flash/FMS, вероятно, смогут больше помочь. – ryanstewart

+0

Если вы узнаете об этом, сообщите мне. Я планирую открыть тот же портал, – gmhk

ответ

0

Самый простой способ заключается в использовании клиент Flash/Flex с Red5 http://osflash.org/red5

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

Я рекомендую настроить 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"); 
     } 
    } 
} 

КАК SEND ВИДЕО НА СВЕТЛОЕ COVE

Они имеют API только что прочитал над ним.

+0

Нет, мы не хотим устанавливать Red5 для трансляции видео, мы оставим вещательную часть Ooyala/brightcove. Я хочу знать 2 вещи. 1. Как я собирал прямой эфир с камеры пользователя 2. Как я мог бы подключить этот прямой эфир к серверам Ooyala/brightcove. – user274383

 Смежные вопросы

  • Нет связанных вопросов^_^