标准的flash播放器ActionScript3语句,播放flash publish的rtmp流,
NetConnection--->NetStream--->play--->attachNetStream
然而项目中这么做,一直处于卡顿状态。
后来添加了一句

nsPlayer.bufferTime = 0.1;

居然不卡顿了。
帮助文档说:
The default value is 0.1 (one-tenth of a second). To determine the number of seconds currently in the buffer, use the bufferLength property.
与实际上不符合,我测试nsPlayer.bufferTime = 0;果然是卡顿,和不设置一样。意味着默认是0而不是0.1。
所有的代码如下:

package
{
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.NetStatusEvent;
import flash.external.ExternalInterface;
import flash.media.Camera;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.system.Security;
import flash.ui.ContextMenu;
import flash.utils.setTimeout;
import flash.text.TextField;
public class user extends Sprite
{
private var nc:NetConnection;
private var nsPlayer:NetStream;
private var vidPlayer:Video;
private var cam:Camera;
private var flashvars:Object;
private var rtmpUrl:String;
private var screen_w:int=640;
private var screen_h:int=360;
public function user()
{
if (!this.stage) {
this.addEventListener(Event.ADDED_TO_STAGE, this.system_on_add_to_stage);
} else {
this.system_on_add_to_stage(null);
}
} /**
* system event callback, when this control added to stage.
* the main function.
*/
private function system_on_add_to_stage(evt:Event):void {
this.removeEventListener(Event.ADDED_TO_STAGE, this.system_on_add_to_stage);
trace("[Jeffer] js not ready, try later.");
this.stage.align = StageAlign.TOP_LEFT;
this.stage.scaleMode = StageScaleMode.NO_SCALE; this.contextMenu = new ContextMenu();
this.contextMenu.hideBuiltInItems(); flashvars = this.root.loaderInfo.parameters; if (!flashvars.hasOwnProperty("id")) {
// throw new Error("must specifies the id");
} this.rtmpUrl = flashvars.rtmpUrl; Security.allowDomain("*");
Security.allowInsecureDomain("*"); flash.utils.setTimeout(this.system_on_js_ready, 500);
} /**
* system callack event, when js ready, register callback for js.
* the actual main function.
*/
private function system_on_js_ready():void {
if (!flash.external.ExternalInterface.available) {
trace("[Jeffer] js not ready, try later.");
flash.utils.setTimeout(this.system_on_js_ready, 100);
return;
}
var label:TextField = new TextField();
label.x = 20;
label.y = 20;
label.width = 400;
label.text="拉流地址:"+(rtmpUrl==null?"":rtmpUrl);
addChild(label); if(rtmpUrl != null){
var tcpUrl:String = rtmpUrl.substr(0, rtmpUrl.lastIndexOf("/")); nc = new NetConnection();
nc.client = {};
nc.client.onBWDone = function():void {};
nc.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
nc.connect(tcpUrl); //注意服务器的IP地址。。。不然显示不出来
trace("输出调试信息.");
}
} private function onNetStatus(event:NetStatusEvent):void{
trace(event.info.code);
if(event.info.code == "NetConnection.Connect.Success"){
displayPlaybackVideo();
}
} private function displayPlaybackVideo():void{
var streamName:String = this.rtmpUrl.substr(this.rtmpUrl.lastIndexOf("/"));
streamName.replace("/","");
nsPlayer = new NetStream(nc);
nsPlayer.bufferTime = 0;
nsPlayer.play(streamName);
vidPlayer = new Video(screen_w, screen_h);
vidPlayer.x = 0;
vidPlayer.y = 0;
vidPlayer.attachNetStream(nsPlayer);
addChild(vidPlayer);
}
}
}

  

netstream播放rtmp直播流卡顿的更多相关文章

  1. 写了个项目 Web-Rtmp: 使用 WebSocket 在网页上播放 RTMP 直播流

    http://neue.v2ex.com/t/316766 虽说浏览器里用 js 解码'播放'视频的方案已经有几个了... 为什么不再多一个呢... 基本原理: 服务端使用 websockify 中转 ...

  2. H5浏览器播放RTMP直播流实现切换

    切换直播源的参考:http://blog.csdn.net/u012737182/article/details/73920830

  3. H5浏览器播放RTMP直播流

    <!DOCTYPE html><html><head><meta charset="UTF-8"><title>Inse ...

  4. nginx开发(四)调用ffmpeg,搭建rtmp直播流。

    1: 修改conf文件,配置rtmp直播 打开usr/local/nginx/conf/nginx.conf,添加红色内容: rtmp {#rtmp点播配置    server {        li ...

  5. 抛开flash,自己开发实现C++ RTMP直播流播放器

    抛开flash,自己开发实现C++ RTMP直播流播放器 众所周知,RTMP是以flash为客户端播放器的直播协议,主要应用在B/S形式的场景中.本人研究并用C++开发实现了RTMP直播流协议的播放器 ...

  6. 搭建rtmp直播流服务之3:java开发ffmpeg实现rtsp转rtmp并实现ffmpeg命令的接口化管理架构设计及代码实现

    上一篇文章简单介绍了java如何调用ffmpeg的命令:http://blog.csdn.net/eguid_1/article/details/51777716 上上一篇介绍了nginx-rtmp服 ...

  7. 搭建rtmp直播流服务之1:使用nginx搭建rtmp直播流服务器(nginx-rtmp模块的安装以及rtmp直播流配置)

    欢迎大家积极开心的加入讨论群 群号:371249677 (点击这里进群) 一.方案简要 首先通过对开发方案的仔细研究(实时监控.流媒体.直播流方案的数据源-->协议转换-->服务器--&g ...

  8. 极速搭建RTMP直播流服务器+webapp (vue) 简单实现直播效果

    在尝试使用webRTC实现webapp直播失败后,转移思路开始另外寻找可行的解决方案.在网页上尝试使用webRTC实现视频的直播与看直播,在谷歌浏览器以及safari浏览器上测试是可行的.但是基于基座 ...

  9. 三、直播整体流程 五、搭建Nginx+Rtmp直播流服务

    HTML5实现视频直播功能思路详解_html5教程技巧_脚本之家 https://m.jb51.net/html5/587215.html 三.直播整体流程 直播整体流程大致可分为: 视频采集端:可以 ...

随机推荐

  1. NOI 2004 郁闷的出纳员

    Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常 ...

  2. ubuntu下使用nginx搭建流媒体服务器,实现视频点播

    首先我们看如何实现视频点播,视频点播支持flv文件及H264编码视频,ACC编码音频的mp4文件: 第一步,创建单独的目录(因为软件较多,容易混乱),下载需要的软件: 我们需要下载nginx,pcre ...

  3. ionic2 安装与cordova打包

    1.安装: cnpm install -g cordova ionic ionic start name cd name cnpm install   2.环境配置: http://www.cnblo ...

  4. 免费V P N获取方式

    给需要加速器链接国外网站的朋友, 打开网址:http://miaoaff.com/reg.php?id=204250: 用一个邮箱注册,就会得到一个免费的vpn软件账号(包含300M流量时间永久): ...

  5. 浏览器与CDN缓存行为

    @地址栏回车 1. 未过期: 浏览器拦截,直接返回: (expires/cache-control两个参数决定,如果两个参数都有,cache-control覆盖expires); 2. 已过期: et ...

  6. dede的pagelist标签的listsize数字属性详解

    转载▼http://blog.sina.com.cn/s/blog_a4f3bd4e01012c8n.html dede的pagelist标签的listsize数字属性详解.见远seo经常用织梦搭建各 ...

  7. 【编程技巧】Ext.QuickTips.init();

    启动悬浮提示(在你验证非法时.和现实提示语句等) 默认情况下悬浮提示没有启动:所以必须加上这句代码

  8. html动态生成的代码,绑定事件

    如果使用jQuery,你可以这样写: // .class为你绑定事件的动态生成的结点 $(document).on('click', '.class', function() { // 你要绑定的事件 ...

  9. linux_文件权限

    权限贯穿linux整个系统 创建文件或目录,属主和组都是当前用户 linux权限位? 9位基础权限位, 3位一组,总共12位权限 用户对文件权限,相当于你的笔记本 r      读    4 w    ...

  10. j2e应用概述

    过年也过完了,现在正式开始进入j2e的整理.现在开篇第一篇,整理一下j2e应用和开发环境.j2e应用提供的跨平台性,开放性已经各种远程访问的技术,为异构系统的良好整合提供了保证.注意这个是有一个异构系 ...