【发布时间】:2009-02-24 19:54:56
【问题描述】:
我正在开发的 Flash 应用程序的一个功能是能够将网络摄像头流式传输给其他人。我们只是在 Flash 中使用内置的网络摄像头支持并通过 FMS 发送。
有些人要求更高质量的视频,但我们已经在 Flash 中使用了最高质量设置(将质量设置为 100%)。
我的理解是,在较新的 Flash 播放器中,他们为视频添加了对 MPEG-4 编码的支持。我创建了一个简单的测试 Flex 应用程序来尝试比较 MP4 与 FLV 编码的视频质量。但是,我似乎根本无法让 MP4 工作。
根据Flex documentation,要使用 MP4 而不是 FLV,我唯一需要做的就是在调用发布时将“mp4:”添加到流的名称:
将流名称指定为字符串 带前缀 mp4:有或没有 文件扩展名。前缀 向服务器指示该文件 包含 H.264 编码的视频和 MPEG-4 中的 AAC 编码音频 第 14 部分容器格式。
当我尝试这个时,没有任何反应。我没有在客户端引发任何事件,没有抛出异常,并且我在服务器端的日志记录没有显示任何流开始。
以下是相关代码:
// These are all defined and created within the class.
private var nc:NetConnection;
private var sharing:Boolean;
private var pubStream:NetStream;
private var format:String;
private var streamName:String;
private var camera:Camera;
// called when the user clicks the start button
private function startSharing():void {
if (!nc.connected) {
return;
}
if (sharing) { return; }
if(pubStream == null) {
pubStream = new NetStream(nc);
pubStream.attachCamera(camera);
}
startPublish();
sharing = true;
}
private function startPublish():void {
var name:String;
if (this.format == "mp4") {
name = "mp4:" + streamName;
} else {
name = streamName;
}
//pubStream.publish(name, "live");
pubStream.publish(name, "record");
}
【问题讨论】:
-
我也有类似的问题,但我不想发布到服务器。相反,我想使用套接字流式传输视频...我该怎么做?见stackoverflow.com/questions/8445297/…
标签: apache-flex actionscript-3 video mp4