Netstream.seek()不适用于Flash中的MP4视频

Netstream.seek()不适用于Flash中的MP4视频,flash,actionscript-3,video-streaming,mp4,netstream,Flash,Actionscript 3,Video Streaming,Mp4,Netstream,我正在Actionscript中实现一个视频播放器,我需要能够定义视频的开始播放时间。Netstream.seek(pos)适用于flv文件,但不适用于H.264文件(播放器从一开始就开始播放视频)。有人知道可能是什么问题吗 (我使用Netstream进行此操作,而不是在调用Netstream.play方法时添加带有开始时间的参数,因为我没有Flash Media Server)。Flash不支持发送字节头,因此您将始终获得字节0-。您可以通过使用伪流()来完成搜索。基本上,您提供一个get-p

我正在Actionscript中实现一个视频播放器,我需要能够定义视频的开始播放时间。Netstream.seek(pos)适用于flv文件,但不适用于H.264文件(播放器从一开始就开始播放视频)。有人知道可能是什么问题吗


(我使用Netstream进行此操作,而不是在调用Netstream.play方法时添加带有开始时间的参数,因为我没有Flash Media Server)。

Flash不支持发送字节头,因此您将始终获得字节0-。您可以通过使用伪流()来完成搜索。基本上,您提供一个get-param?start=1234,然后服务器后端修补moov头,将其移动到文件的前面,并开始在开始位置为其提供服务。(基本上,在运行中拆分文件,起始位置为1234,并提供新生成的文件)

我知道这适用于最新的Red5 1.0版本,我不能为FMS或Wowza说话。

您是否从服务器获取流?我使用的是我在web上找到的示例MP4文件(即)。我认为问题在于并非所有服务器都支持seek功能。问题似乎与以下事实有关:当视频定义了关键帧时,seek仅适用于MP4流媒体。在这种情况下,我应该能够找到一个包含关键帧的位置。我仍然不确定这一点,但这是可能的。我还尝试播放本地文件,但没有成功。您需要视频元数据和服务器支持中的
canseekontime=true
。要查找关键帧,您需要在
关键帧.filepositions
中找到与
关键帧.times
具有相同索引的文件位置,该项最接近您的目标时间。在您了解它之后,您将不得不执行类似于stream.play(path.extension?start=12345[fileposition]的操作),具体取决于服务器实现