如何为直播流创建一个截帧图?
转载请注明:文章来自www.wowza.cn
注意: 要访问最新的技术资料,请访问http://www.ttstream.com/wowza/
为了生成截帧图,下面这个自定义模块可以实时地为直播流创建了一个只有一个帧的FLV文件,然后利用FFMPEG等工具将这个FLV文件转成一个图片。 www.wowza.cn 下面也给出了一个在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:
var resultObj:Object = new Object();
resultObj.onResult = function(fileName: String)
{
	trace("result: "+fileName);
}
nc.call("createSnapshotLive", resultObj, "myStream");
VOD
对于VOD点播流,你可以设定一个截图的时间位置。www.wowza.cn 这个时间以毫秒为单位,截的图是离这个时间点最近的关键帧的图像。
Code:
var resultObj: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等工具来处理它。www.wowza.cn

用FFMPEG将FLV转为图片


FFMPEG 可以将flv文件转化为一个PNG图片。

Code:
ffmpeg -i myStream.flv -vcodec png -vframes 1 -an -f rawvideo -s 320x240 myStream.png
注意:随着FFMPEG的版本变化,www.wowza.cn,这里的命令行可能会变化,因此请参考http://www.ffmpeg.org/获得最新的命令行参数资料。