在flash播放器中,如何立即播放h.264流

时间:2014-12-04 03:21:38

标签: flash h.264 netstream

有一个服务器,它发送AVCDecoderConfigurationRecord标签和连续的H264视频标签。在客户端,我使用NetStream和appendBytes(数据生成模式)来显示视频。代码喜欢

video = new Video
addChild(vdieo)

socket = new Socket
socket.connect(server)
socket.addEventListener(SOCEKT_DATA, onRecv)

nc = new NetConnection
nc.connect(null)
ns = new NetStream(nc)
ns.client = this
ns.play(null)
video.attachNetStream(ns)

function onRecv(e) : void {
    data = new ByteArray
     socket.readBytes(data)
     if (data-is-AVCDecoderConfigurationRecord-tag) {
          ns.appendBytesAction(RESET_BEGIN)
     }
     ns.appendBytes(data)
}

客户端正常工作,NetStream不会开始对视频进行处理,直到它将大约20个标记缓存到缓冲区中(大约2秒,因为fps为10)。 我不能满足我的要求,即我需要在客户端收到标签时立即播放流。我设置bufferTime = 0或其他小数字,没有效果,像往常一样等待大约20个标签。虽然我将bufferTime设置得更大,例如5,但NetStream会等待更多标签。

  

END_SEQUENCE 常量

     
    

public static const END_SEQUENCE:String =“endSequence”     表示媒体流数据已完成。对于某些编解码器,例如H.264,字节解析器在开始播放之前等待缓冲区填充到某个点。传递END_SEQUENCE以告诉字节解析器立即开始播放。

  

在Adobe文档中,我发现了这些信息,并尝试使用END_SEQUENCE的几种方法,但所有这些方法都不起作用。 有没有办法在没有缓冲区的情况下立即播放H264标签?

0 个答案:

没有答案