非开发者如何使用动态流及DVR技术

通过此文可以了解一下动态流及DVR的简易配置和使用过程.
有些句子翻得不太顺, 见谅 :)
http://flash.9ria.com/thread-35933-1-1.html

读取视频流的时间码

FMLE3中有TimeCode选项, 可按Frame Interval将时间嵌入到视频流中.
格式为HH:MM:SS:FF
客户端接收:
AS2:
//ns是NetStream实列
ns.onFI = function(infoObj):Void
{
//infoObj[“st”]
//infoObj[“sd”]
//文档上记载的是tc, 这个可能是FME2.5的输出, 没做验证
for( var i:String in infoObj)
{
trace(i+” : “+infoObj[i]);
}
}
AS3:
//ns是NetStream实列
ns.client.onFI = onFI;
private function onFI(infoObj:Object):void
{
for(var i:String in infoObj)
{
trace(i, infoObj[i]);
}
}
这样就能根据视频时间进行某些操作了
PDF文档下载

在FMS的SWF验证中将Flash Media Live Encoder 3排除

开启FMS端的SWF文件验证,需要将Flash Media Encoder排除在检测外,修改Application.xml中节点即可:

不过文档中并未指出Flash Media Live Encoder 3.0如何加入,貌似当时还未释出FMLE3 -_-!!
那么应该怎么添加呢?
其实只要加个”L”就可以了:

这样就可以在开启SWF验证的同时使用FMLE3连接FMS应用了 :)

F4V Post Processor F4V文件不能播放的一种方法

Flash Media Live Encoder 3/Flash Media Server3.5录制的F4V文件不能用flv播放器播放。
听经理说过F4V和MP4一样是种容器,难道是编码不能被识别?
但以常理来讲,ADOBE自家的”套装”,没道理不支持的。
或许对网络过于依赖了,随手就上了GOOGLE,查到了一些相关信息。
比较有用的一条是:
Subject: F4V
其中提到了解决方案就是F4V Post Processor这个ADOBE官方提供的工具。
下载地址:F4V Post Processor
看了里面文档,大意是说录制生成的是一种碎片文件(fragmented file), 以多种moof atom将数据保存。
有些MPEG-4工具和播放器不支持moof atoms,只支持单一的moov atom。
这些都是视频编码的术语吧,翻译可能不正确,请自行查找相关资料,若行内人士路过请指点一二。
关于moov atom,下面有一点解释:
Re: moov atom
还有相关的MP4文件需要全部加载才能播放的问题,也是由于关于视频的atom数据放在文件结尾导致的,
有人做出了AIR工具:
H.264 and the moov atom
令人高兴的是F4V Post Processor是命令行方式工作的,这点太棒了。另外还提供了Linux版。
不过为什么不像flvcheck等工具集成到FMS中呢,不解。

停止FMS3.5的Apache服务

装备了FMS3.5的Apache后,80端口被占用了。
在服务中关闭了fmshttpd服务后,发现还是无法使用。
查了80端口的占用程序,是FMSEdge,看来还得关闭FMS服务 -_-!!!
开始求助文档:
http://help.adobe.com/en_US/FlashMediaServer/3.5_AdminGuide/WSE2A5A7B9-E118-496f-92F9-E295038DB7DB.html#WS850F7C75-11EB-4893-ACE1-B14A1D964D8E
内容如下:
Enable Apache
When you install Flash Media Server and choose to install Apache, it is enabled by default. To manually enable Apache, edit the fms.ini and Adaptor.xml files.
Open the fms.ini file in a text editor.
Add port 80 to the ADAPTOR.HOSTPORT tag.
ADAPTOR.HOSTPORT = :1935, 80
To start and stop Apache when Flash Media Server starts and stops, […]

Flash Media Server 3.5 及 FMLE 3 下载

消息来源:
http://www.flashconnections.com/?p=72
http://blogs.adobe.com/ktowes/2009/01/flash_media_server_35_and_flas.html
这一天等得太久 T_T
Flash Media Server 3.5 免费开发版及Flash Media Live Encoder 3.0(之前的 Adobe Flash Media Encoder)已经提供下载了。
下载地址:
Flash Media Server 3.5 (免费开发版)
Flash Media Live Encoder 3.0 (免费)
Cheers~~

粗心又浪费了时间:FMS的Application.xml

写了一段录制视频的代码,很普通的那种,[GoodLuck]
然后测试,在程序目录下没有找到生成的视频。以前也做过简单的录制,确认代码和操作没有错误。
在客户端和服务端加上相关监听事件,输出信息也显示了整个录制过程很好很成功,但,就是没有视频文件生成。忙来忙去,最后在live目录下面找到了,真是晕。难道是FMS配置的问题?
打开conf\_defaultRoot_\_defaultVHost_下的Vhost.xml,前不久学习时记得这里有流目录的节点VirtualDirectory,但这个文件也没有异常,VirtualDirectory是默认值。
最后还是找到了原因:服务端程序文件中有个Application.xml,这个是之前学习live时,把FMS的live目录copy到这里了。果不其然,里面有/;${LIVE_DIR},应该是指向了live目录。
把这里改后就正常了 :)

SharedObejct与ObjectEncoding

卡在一个问题上:
FMS服务端的main.asc如下:
application.onAppStart = function()
{
trace(“App Start…”);
var so = SharedObject.get(“whiteboard”, true);
var obj = so.getProperty(“op”);
trace(obj.action);
}
当重加载服务或者客户端对SharedObject进行写操作时,FMSCore.exe的CPU占用率会升至60%~70%,并且只有在getProperty时才会出现此现象。
在网上查了下,没有查到。研究了一整天,无果。只好作罢,休息。
后来发现在main.asc文件中建立与客户端相同格式的SharedObejct对象后读取无任何问题。忽然想到这可能是编码的原因。
于是指定了客户端的编码:ObjectEncoding.AMF0
再次测试,问题消失了。
总结:FLEX中如果没有指定,NetConnection默认的objectEncoding为ObjectEncoding.AMF3。马虎害死人呐。
p.s. 希望快些见到FMS4

MPlayer无法播放RMVB

试用MPlayer播放RMVB时命令行窗口出现错误提示:
Opening video decoder: [realvid] RealVideo decoder
Error loading dll
ERROR: Could not open required DirectShow codec drvc.so.
Read the RealVideo section of the DOCS!
VDecoder init failed :(
Opening video decoder: [realvid] RealVideo decoder
Error loading dll
ERROR: Could not open required DirectShow codec drv4.so.6.0.
Read the RealVideo section of the DOCS!
VDecoder init failed :(
Opening video decoder: [realvid] RealVideo decoder
Error loading dll
ERROR: Could […]