【发布时间】:2014-12-17 19:22:41
【问题描述】:
我有一个 WebM 编写器 实例,它从 VP8 编码器 实例中将视频帧作为字节数组(媒体缓冲区)并将它们连续写入MemoryStream同时将它们打包成一个WebM 容器r.
我还有一个HttpListener,它异步等待 http 请求。当客户端到达时,将创建一个新的HttpListenerContext,其中包含一个Stream 实例以写入响应流(Context.Response.OutputStream)。现在我想“多路复用”我的 内存流,例如不断地从中读取并分享给不同的连接 http 客户端。所以:
- 从 VP8 编码器获取帧
- 使用 WebM 编写器将它们写入内存流
-> 我卡住了
- 同时从内存流中读取
- 不断将数据写入连接的http客户端的响应流中
整个任务是针对 HTTP 直播流服务器。不幸的是,由于专有组件,我无法显示 WebM 编写器/VP8 编码器等的来源,但我希望你能明白。
我已经尝试过使用stream.CopyTo(),但似乎HttpListenerContext 将复制操作理解为正在完成,因此只返回了应该发送的一部分内容。同样使用StreamReader 从流中读取会在每个操作中设置位置,所以这也是没用的。
【问题讨论】:
标签: c# multithreading http stream video-streaming