我使用的是c++和poco库。我正在尝试实现一个视频流httpserver。
最初我使用的是Poco::StreamCopier。但客户端无法流式传输。
相反,客户端正在下载视频。如何让服务端发送streamresponse,让客户端可以在浏览器中流式播放视频,而不是下载?
发布于 2012-07-25 02:00:58
虽然不在POCO中,但您可以使用ffmpeg。它有用于许多视频协议的流媒体服务器,并且是用C编写的(您可以为其编写类似POCO的适配器)。
http://ffmpeg.org/ffmpeg.html#rtp
http://ffmpeg.org/ffmpeg.html#toc-Protocols
http://git.videolan.org/?p=ffmpeg.git;a=tree
而且它有一个相当自由的许可:http://ffmpeg.org/legal.html
发布于 2011-07-22 11:51:58
您需要研究哪种视频编码和容器适合流式传输--并不是所有的视频文件都可以流式传输
发布于 2011-07-22 12:08:24
不需要在另一端使用任何东西来解码视频,而只是通过HTTP,您可以使用mime编码"content-type:multipart/x-mixed-replace;boundary=...“并发送一系列jpeg图像。
这实际上称为HTTP上的M-JPEG。请参阅:http://en.wikipedia.org/wiki/Motion_JPEG
浏览器将在接收到图像时替换每个图像,这使得它看起来像是视频。这可能是将视频流传输到浏览器的最简单的方法,许多IP网络摄像头本身就支持这一点。
然而,它无论如何都不是带宽友好的,因为它必须为每一帧发送一个完整的jpeg文件。因此,如果你打算在互联网上使用它,它将会工作,但会比其他方法使用更多的带宽。
然而,现在大多数浏览器都天真地支持它,听起来这就是你想要的。
https://stackoverflow.com/questions/6353320
复制相似问题