Node.js视频不是缓冲而是播放

时间:2016-07-30 21:32:09

标签: node.js video server mp4

我正在启动node.js服务器,并且我试图在客户端播放视频,在这种情况下是浏览器,每次我尝试播放视频时播放的视频但搜索栏不会缓冲但视频会播放,如果你试图寻找它只会把你送回原来的位置。我的赌注猜测是writeHead的写入速度不够快,所以它是单向的,它不会在视频播放之前缓冲。

video.mp4的服务器代码段

class ChannelEdit : DialogFragment
{
    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        base.OnCreateView(inflater, container, savedInstanceState);
        var view = inflater.Inflate(Resource.Layout.ChannelEdit, container, false);
        DisplayMetrics dm = new DisplayMetrics();
        this.Dialog.Window.WindowManager.DefaultDisplay.GetMetrics(dm);
        int width = dm.WidthPixels;
        int height = dm.HeightPixels;
        this.Dialog.Window.SetLayout((int)width / 2, (int)height / 2);   
        return view;
    }
}

1 个答案:

答案 0 :(得分:0)

您需要support byte range requests。请参阅SoundManager2的Technical Notes on the subject

  

Byte Serving在客户端和服务器之间自动协商,与传统下载相比具有许多优势。最值得注意的是,Byte Serving更接近“流媒体”技术,并且一旦持续时间已知,客户端就可以在文件中的任意位置搜索,缓冲和恢复播放。

示例请求:

GET 1a8fdf5d0433ed581bbcee74836b3305.mp4 HTTP/1.1
Range: bytes=5210604-5275910

预期回应:

HTTP/1.1 206 Partial Content
Accept-Ranges: bytes
Content-length: 65307
Content-Range: bytes 5210604-5275910/5275911
Content-Type: video/mp4
  1. 您似乎没有发送206 Partial Content状态。
  2. 您没有发送正确的Content-Range回复标题。
  3. 最后,如果客户端发出超出范围的范围请求 - 即,没有任何范围值与资源范围重叠 - 服务器应以416 Requested Range Not Satisfiable状态响应。