我正在服务器端录制实时流(使用FMS 3.5.3)。录制视频时停止录制。我检查了录制的视频长度,它总是不同的,有时只有 2 分钟,有时 10 分钟,有时 20 分钟
有人遇到过这个问题吗?如果您能帮助我解决这个问题,将很高兴!
法典:
Client.prototype.RecordStart = function()
{
trace("RecordStart");
var ns = Stream.get("mp4:test:f4v");
if (ns)
{
ns.record();
ns.play("livestream",-1,-1,false);
}
}
Client.prototype.RecordStop = function()
{
trace("RecordStop");
var ns = Stream.get("mp4:test.f4v");
ns.record(false);
ns.play(false);
ns.flush();
}
错误就在这里
var ns = Stream.get("mp4:test:f4v");
它应该是"mp4:test:f4v"
而不是"mp4:test.f4v"
.
以防万一您仍然遇到问题,ctdavids 在这里提供的解决方案: https://forums.adobe.com/thread/865510 对我有用!
问题是
var ns = Stream.get("mp4:test:f4v");
将录制流分配给函数内部具有范围的 NS 变量。因此,在几分钟内,变量将被垃圾回收。这将使录制突然停止,没有状态通知或错误消息。
要解决此问题,只需将变量放在全局对象中,例如,
var ns = Stream.get("mp4:test:f4v");strMaps[recordingStreamName] = ns;
其中strMaps是全局变量(Object),recordingStreamName只是记录的唯一名称。
停止录制时,可以使用以下命令删除此全局引用
删除 strMaps[录制流名称];
希望这有帮助!