如何在 ActionScript 中找到实时 RTMP 流何时停止?

Posted

技术标签:

【中文标题】如何在 ActionScript 中找到实时 RTMP 流何时停止?【英文标题】:How to find when live RTMP stream stops in ActionScript? 【发布时间】:2016-06-16 05:32:56 【问题描述】:

我目前有以下代码,其中streamVideo 是一个 FLVPlayBack 组件:

streamVideo.addEventListener( VideoEvent.STATE_CHANGE, onVideoStateChange );

streamVideo.isLive = true;
streamVideo.source = "rtmp://mystreamurl";

function onVideoStateChange(evt:VideoEvent):void 
  var streamVideo:FLVPlayback = evt.target as FLVPlayback;
  switch (evt.state) 
    case VideoState.CONNECTION_ERROR:
      trace( 'Connection error' );
      break;
    default:
    trace( 'Player is: ' + evt.state );
  

当我的直播开始时,这会给我Player is: playing,但当我的直播结束时,我不会收到任何通知。

【问题讨论】:

【参考方案1】:

我记得在玩 Adob​​e Cirrus 和 netstreams 时遇到过类似的问题。我不确定这是否可行,但请尝试检查您的 streamVideo 的 metaData 属性下的 videoDataRate == 0 是否。

【讨论】:

不,这似乎对我不起作用。我正在使用trace 将其输出,即使在流停止并且视频在 FLVPlayback 中没有继续播放后,它仍然给我 1800。 如果您找不到其他方法...我只会使用 netstream 和视频对象。我知道在 netstream 类中你可以访问 bytesAvailable。当它为 0 时,流结束(或者在我的情况下,用户停止说话)。虽然他们可能会以另一种方式,但如果你的时间不多了,你有一个解决方法。 嗯,好的 - 我将如何设置 bytesAvailable?我有一个NetStream 对象。 我也在尝试检测流何时开始 - 使用 NetConnectionNetStream 怎么可能?

以上是关于如何在 ActionScript 中找到实时 RTMP 流何时停止?的主要内容,如果未能解决你的问题,请参考以下文章

Linux 内核实时调度类 ④ ( 实时运行队列 rt_rq 源码分析 | 实时运行队列 rt_rq 结构体字段分析 | activert_nr_runningcurrnext 字段 )

ActionScript3 gotoAndPlay 未找到框架。

Linux 内核实时调度类 ⑦ ( 实时调度类核心函数源码分析 | dequeue_task_rt 函数 | 从执行队列中移除进程 )

如何在 Actionscript 中引用静态类

翻译:实时通信协议UDP-RT——Michael Pan

Linux(内核剖析):11---进程调度之实时调度策略(SCHED_FIFOSCHED_RRMAX_RT_PRIO实时优先级)