我有一个WebM写入器实例,它从VP8编码器实例作为字节数组(媒体缓冲区)获取视频帧,并将其连续地写入到MemoryStream中,同时将它们打包成WebM容器。我还有一个HttpListener,它异步等待http请求。当有客户端到达时,会创建一个新的HttpListenerContext,其中包含一个Stream实例,用于在响应流(Context.Response.OutputStream)中写入数据。现在我想要“多路复用”我的内存流,例如不断从中读取数据并共享给连接的不同HTTP客户端。因此:
1. 从VP8编码器中获取帧 2. 使用WebM writer将它们写入内存流 -> 在这里我卡住了 3. 同时从内存流中读取 4. 连续地将数据写入已连接的HTTP客户端的响应流
整个任务是为了HTTP直播流服务器。不幸的是,由于专有组件,我无法展示WebM writer/VP8编码器等的源代码,但我希望您能理解我的意思。
我已经尝试使用stream.CopyTo(),但似乎HttpListenerContext将复制操作理解为“完成”,因此仅返回应发送的一部分。此外,使用StreamReader从流中读取会使位置随每次操作前进,因此也没有用。
1. 从VP8编码器中获取帧 2. 使用WebM writer将它们写入内存流 -> 在这里我卡住了 3. 同时从内存流中读取 4. 连续地将数据写入已连接的HTTP客户端的响应流
整个任务是为了HTTP直播流服务器。不幸的是,由于专有组件,我无法展示WebM writer/VP8编码器等的源代码,但我希望您能理解我的意思。
我已经尝试使用stream.CopyTo(),但似乎HttpListenerContext将复制操作理解为“完成”,因此仅返回应发送的一部分。此外,使用StreamReader从流中读取会使位置随每次操作前进,因此也没有用。