- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
无法在任何地方得到任何爱,这很难相信。 NetStream 上的实时流和缓冲区不混合。为什么?文档并没有说你不能这样做。
播放被灌输。缓冲区应该填充到您在播放前设置的内容。但是,大约有一半的时间,播放器会立即开始播放,而忽略您设置的缓冲时间。然后,您会陷入短缓冲和重新缓冲循环中,这会降低播放体验。
自己试一试吧。这是最简单的直播视频播放器。没有多余的装饰。只需通过更改 ns.play() 语句中的 defaultURL 字符串和流名称将其连接到您的实时流。
在 Flex Debug模式下运行它。它将每秒检查并打印 ns.bufferLength 属性。缓冲区当前设置为 20 秒。上次我运行它时,我从未在缓冲区中超过 2 秒。播放器立即开始播放,而不是先缓冲完整的 20 秒。有时您会达到完整的 20,有时则不会。为什么?不知道。
您不能可靠地缓冲实时流还是代码有问题?
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
initialize="init()">
<mx:Script>
<![CDATA[
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import mx.core.UIComponent;
private var vid:Video;
private var videoHolder:UIComponent;
private var nc:NetConnection;
private var defaultURL:String="rtmp://your_streaming_server_url_here";
private var ns:NetStream;
private var msg:Boolean;
private var intervalMonitorBufferLengthEverySecond:uint;
private function init():void
{
vid=new Video();
vid.width=864;
vid.height=576;
vid.smoothing = true;
//Attach the video to the stage
videoHolder = new UIComponent();
videoHolder.addChild(vid);
addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
this.addChild(videoHolder);
connect();
}
public function onSecurityError(e:SecurityError):void
{
trace("Security error: ");
}
public function connect():void
{
nc = new NetConnection();
nc.client = this;
nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
nc.connect(defaultURL);
}
public function netStatusHandler(e:NetStatusEvent):void
{
switch (e.info.code) {
case "NetConnection.Connect.Success":
trace("Connected successfully");
createNS();
break;
case "NetConnection.Connect.Closed":
trace("Connection closed");
connect();
break;
case "NetConnection.Connect.Failed":
trace("Connection failed");
break;
case "NetConnection.Connect.Rejected":
trace("Connection rejected");
break;
case "NetConnection.Connect.AppShutdown":
trace("App shutdown");
break;
case "NetConnection.Connect.InvalidApp":
trace("Connection invalid app");
break;
}
}
public function createNS():void
{
trace("Creating NetStream");
ns=new NetStream(nc);
//nc.call("FCSubscribe", null, "live_production"); // Only use this if your CDN requires it
ns.addEventListener(NetStatusEvent.NET_STATUS, netStreamStatusHandler);
vid.attachNetStream(ns);
//Handle onMetaData and onCuePoint event callbacks: solution at http://tinyurl.com/mkadas
//See another solution at http://www.adobe.com/devnet/flash/quickstart/metadata_cue_points/
var infoClient:Object = new Object();
infoClient.onMetaData = function oMD():void {};
infoClient.onCuePoint = function oCP():void {};
ns.client = infoClient;
ns.bufferTime = 20;
ns.play("your_stream_name");
ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
function asyncErrorHandler(event:AsyncErrorEvent):void {
trace(event.text);
}
intervalMonitorBufferLengthEverySecond = setInterval(monPlayback, 1000);
}
public function netStreamStatusHandler(e:NetStatusEvent):void
{
switch (e.info.code) {
case "NetStream.Buffer.Empty":
trace("Buffer empty: ");
break;
case "NetStream.Buffer.Full":
trace("Buffer full:");
break;
case "NetStream.Play.Start":
trace("Play start:");
break;
}
}
public function monPlayback():void {
// Print current buffer length
trace("Buffer length: " + ns.bufferLength);
}
public function onBWDone():void {
//Do nothing
}
public function onFCSubscribe(info:Object):void {
// Do nothing. Prevents error if connecting to CDN.
}
public function onFCUnsubscribe(info:Object):void {
// Do nothing. Prevents error if connecting to CDN.
}
]]>
</mx:Script>
</mx:Application>
Connected successfully
Creating NetStream
Play start:
Buffer length: 0.001
Buffer full: //Obviously the buffer is not full here. Bogus.
Buffer length: 2.202
Buffer length: 2.369
Buffer length: 2.102
Buffer length: 2.402
Buffer length: 2.302
Buffer length: 2.369
Buffer length: 2.269
Buffer length: 2.269
Buffer length: 2.302
Buffer length: 2.369
Buffer length: 1.926
Buffer length: 2.336
Buffer length: 2.286
Buffer length: 2.336
Buffer length: 2.336
Buffer length: 2.403
Buffer length: 2.388
Buffer length: 2.402
Buffer length: 2.335
Buffer length: 2.369
Buffer length: 2.336
Buffer length: 2.339
Buffer length: 2.369
Buffer length: 2.402
Buffer length: 2.369
Buffer length: 2.396
Buffer length: 2.436
Buffer length: 2.336
Buffer length: 2.269
最佳答案
AS3 reference明确指出您不能这样做:
Live content When streaming live content, set the bufferTime property to 0.
关于apache-flex - Flex + 缓冲区 + RTMP 实时流 = 灾难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2149446/
我需要从 RTMP 流中裁剪视频并将其发送到另一个总是变化的 RTMP 服务器。我的理解是我应该使用 nginx-proxy和 ffmpeg ,谁能帮我设置一下? 我想我需要将流发送到像 /strea
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 6年前关闭。 Improve this qu
如何在gstreamer中混合两个rtmp流? Src: nginx-rtmp 摄像头 - h.264/speex接收器:nginx-rtmp GStreamer 0.10 或 1.0 ------
我正在尝试组合/合并两个 rtmp 流,然后将它们发布到另一个流 例如: ffmpeg -i rtmp://ip:1935/live/micMyStream7 -i rtmp://ip:1935/li
有什么方法可以拒绝用户在其他网站上播放我的流吗?我正在运行带 rtmp 模块的 nginx,ubuntu 13。这是我的 nginx.conf rtmp { server {
已关闭。这个问题是 not about programming or software development 。目前不接受答案。 这个问题似乎不是关于 a specific programming
我正在开发一个使用 SoundManager2 的网络应用程序。在我的头撞到墙上并且没有让我的音乐流式传输之后,我终于在创建新的 SoundManager 声音时切换了一些 URL。 这是我之前使用的
谁能指导我做上面提到的? 基本上我想要的: 将单个视频文件流式传输到 RTMP 服务器(在我的情况下为 nginx)到链接的 python 脚本: rtmp:///stream/ 因此,理想情况下,视
我正在开发一个需要通过 rtmp 协议(protocol)进行实时广播流的 iphone 应用程序。我一直在努力寻找解决方案。我所知道的是我应该能够使用 rtmp-dump。但我是iphone dev
我正在尝试将传入的 rtmp 流保存在我的服务器上作为 mp4 文件。我正在使用 nginx-rtmp模块并从 flv 更改容器至mp4在 exec_record_done指示。这是使用 ffmpeg
这是我尝试运行的脚本,我相信问题出在这里: #!/bin/bash GIF=/home/stream1/85012216.gif STREAM_KEY=thisisasecret URL=rtmp:/
输出视频: https://youtu.be/VxfoBQjoY6E 解释: 我想:在 Opencv 中处理摄像头流并将其推送到 RTMP 服务器。我已经设置了 NGINX(RTMP 模块),并且已经
我正在尝试遵循本指南 - http://www.helping-squad.com/nginx-rtmp-compile-for-windows/ 为 Windows 编译 nginx rtmp,但是
我是这个论坛的新手,我的英语水平不是最好的! 我有一个网站,在那里我发布了摄像机的视频流,以显示在嵌套时间现场发生的事情!一个具有高 IT 技能的人为我构建了一个小服务器用于重新流 (Datarhei
我有一个闪存媒体服务器。我想在 Android 设备中创建一个实时视频聊天应用程序。 我目前正在使用 RTMP 方法来保护我的应用程序,但我不确定 RTMP 是否是保护我的应用程序的正确安全机制?你能
文件结束时如何保持流连接处于事件状态? 我正在使用 ffmpeg 4 我尝试了超时选项,但它不起作用,所以我的例子是: ffmpeg -i input.webm -timeout -f flv rtm
我有一台服务器,目前正在流出 RTMP 媒体,我需要以最小延迟(2-3 秒)播放它。 现在我正在使用 CRTMPServer 来使用流,但是由于没有不依赖 Flash 的 RTMP 播放器,因此该解决
我正在寻找一种解决方案,使用浏览器(Javascript)将笔记本电脑摄像头的数据发送到 rtmp 服务器(如 facebook live 或 youtube)。我做了研究,但没有运气。我得到了什么:
[已解决] -- 最终编辑中的解决方案 我正在使用 ffmpeg 录制 rtmp 直播,并希望添加一个标志,该标志将在新数据停止到达时自动停止处理。 如果我启动和停止脚本(通过按需终止进程来停止),一
我正在尝试从 ubuntu 启动实时(非点播)RTMP 流,但我仅使用 RTSP 成功通过 VLC 流式传输 vlc -vvv ./videos/test.mp4 --sout '#rtp{dst=1
我是一名优秀的程序员,十分优秀!