gpt4 book ai didi

flash - 现场视频流媒体网站

转载 作者:行者123 更新时间:2023-12-02 05:14:14 24 4
gpt4 key购买 nike

我们期待着开发一个非常有趣的社区门户网站,帮助用户在整个社区广播他们的直播视频。我一直在查看 ustream.tv、justin.tv 等网站,想知道他们使用什么/如何使用技术来做到这一点。

过去几天我做了很多研究,检查媒体以有效地做到这一点,并找出该领域的一些领先公司,如 Ooyala.com、brightcove.com 提供服务器/技术来无缝播放视频在全局范围内。我很快就会与这些提供商中的任何一家签约。

所以我的问题是,我的网站究竟如何捕捉来自用户摄像头的实时提要,将流发送到 ooyala/brightcove 并进一步广播给其他社区用户。

直到现在,我发现 Flash 8/Flex 确实提供了一些从用户 cam 获取流的输入。

我想知道你们中是否有任何人以前从事过此工作/可以阐明我的方法应该如何。

提前致谢。开发drupal

最佳答案

简单的方法是使用带有 Red5 的 Flash/Flex 客户端 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");
}
}
}

如何发送视频到 BRIGHT COVE

他们有一个 API,只是阅读了它。

关于flash - 现场视频流媒体网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2379389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com