为了生成截帧图,下面这个自定义模块可以实时地为直播流创建了一个只有一个帧的FLV文件,然后利用FFMPEG等工具将这个FLV文件转成一个图片。下面也给出了一个在Flash程序中调用接口创建这个截帧图的例子。
你可以在Wowza Module Collection中找到一个编译好的版本。
配置
要启动这个模块,需要在你的应用中添加下面的Module。在这里Configure modules 你可以得到更多配置Module的细节。
Name |
Description |
Fully Qualified Class Name |
createSnapshot |
Create FLV Snapshot. |
com.wowza.wms.plugin.collection.module.ModuleCreateSnapshot |
Flash客户端调用的例子
注:这个Module为直播流和点播流的截图分别提供2个不同的接口。
直播流
对于直播流,你可以获得当前最新的关键帧的截图:
Code:
varresultObj:Object = new Object();
resultObj.onResult= function(fileName: String)
{
trace("result: "+fileName);
}
nc.call("createSnapshotLive",resultObj, "myStream");
VOD对于VOD点播流,你可以设定一个截图的时间位置。这个时间以毫秒为单位,截的图是离这个时间点最近的关键帧的图像。
Code:
varresultObj:Object = new Object();
resultObj.onResult= function(fileName:String)
{
trace("result: "+fileName);
}
nc.call("createSnapshotVOD",resultObj, "sample.mp4", 30000); // 30 seconds into the video
注意: 尽管这个例子用的是sample.mp4点播文件,但是生成的依然是单帧的Flv文件。这个文件被命名为sample.mp4_30000.flv。
这个FLV文件被存储在应用的内容目录下。你可以从这里下载并继续用FFMPEG等工具来处理它。
用FFMPEG将FLV转为图片
FFMPEG 可以将flv文件转化为一个PNG图片。
Code:
ffmpeg -imyStream.flv -vcodec png -vframes 1 -an -f rawvideo -s 320x240 myStream.png
注意:随着FFMPEG的版本变化,这里的命令行可能会变化,因此请参考http://www.ffmpeg.org/获得最新的命令行参数资料。
Wowza Streaming Engine 4是业界功能强大、API接口丰富的流媒体Server产品,采用它作为流媒体服务器产品的案例很多,直播、在线教育、IPTV都有它的用武之地。