标准的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. 51Nod 1080 两个数的平方和(数论,经典题)

    1080 两个数的平方和 基准时间限制:1 秒 空间限制:131072 KB 分值: 5         难度:1级算法题 给出一个整数N,将N表示为2个整数i j的平方和(i <= j),如果 ...

  2. [学习OpenCV攻略][017][ARM9下移植OpenCV]

    安装环境 宿主机: Red Hat Enterprise Linux Server 6.3 开发板: mini2440 相关软件: cmake-3.5.1.tar.gz.OpenCV-2.3.1a.t ...

  3. Oracle_rowid_rownum分页

      Oracle_rowid_rownum_分页 --rowid select * from account where rowid='AAASR6AAEAAAAJWAAA';       selec ...

  4. 邓_html_选项卡

    ================================================= ================[  选项卡  ]================= ======= ...

  5. ADO.NET复习总结(2)--连接池

    1. 2. 3.示例:在一百次循环中,执行数据库连接的打开和关闭,使用stopwatch查看所用的时间. using System; using System.Collections.Generic; ...

  6. asp.net -mvc框架复习(6)-基于MVC实现简单计算器

    1.创建好文件夹 2.视图层代码编写 <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dyn ...

  7. 用CSS实现“表格布局”

    当我们进行浮动布局时,会发现存在着非浮动元素与浮动元素的底部难以对齐的情况,这就是浮动布局的缺陷.因此,过去的前端工作者曾利用<table>以实现"表格布局".因为表格 ...

  8. postgresql+mybatis返回值是数据库字段名

    mybatis 返回map的时候是下划线 role_id, user_id 两种解决方法 1.重命名 postgresql不支持驼峰 加上双引号重命名  SELECT role_id "ro ...

  9. 【笔记】BFC 模型知识整理

    网上看了很多 BFC 的概念,发现都说得不是很完整和深入,刚好最近看了一些视频教程说到了 BFC 概念所以记录一下. BFC 的概念: BFC 全称:Block format context 块级格式 ...

  10. SNMP PDU解析

    (注:此文章仅为个人学习,研究,原创作者:Penguinbupt,原创文章网址:http://blog.csdn.net/u010566813/article/details/50490858) SN ...