我正在制作一个包含视频流的 WinRT 应用程序。现在我在 VLC 作为流服务器和客户端上的 MJPEGDecoder lib ( http://mjpeg.codeplex.com/ ) 来解码视频。
但是在创建 HTTP 流并从客户端连接到它之后,MJPEGDecoder 说标头无效(它需要多部分流)。VLC 到 VLC 工作正常。
问题1:如何解决?
问题 2:为 WinRT 创建视频流的替代方法是什么?
我正在制作一个包含视频流的 WinRT 应用程序。现在我在 VLC 作为流服务器和客户端上的 MJPEGDecoder lib ( http://mjpeg.codeplex.com/ ) 来解码视频。
但是在创建 HTTP 流并从客户端连接到它之后,MJPEGDecoder 说标头无效(它需要多部分流)。VLC 到 VLC 工作正常。
问题1:如何解决?
问题 2:为 WinRT 创建视频流的替代方法是什么?
弄清楚了。在http://tumblr.martinml.com/post/2108887785/how-to-broadcast-a-mjpeg-stream-from-your-webcam-with的帮助下
VLC 具有设置 mime 类型和边界的选项。来自链接的配置示例
:sout=#transcode{vcodec=MJPG,vb=400,width=640,height=480}
:duplicate{dst=std{access=http{mime=multipart/x-mixed-replace;
boundary=--7b3cc56e5f51db803f790dad720ed50a},mux=mpjpeg,dst=:1234/webcam.mjpg}}
只是为了进一步详细说明您的问题/答案。发布的答案仅链接到一个示例,但没有解释它,也没有示例本身。所以我想完成这个答案,以防其他人偶然发现它。
当您定义您的 vlc 流时,您忘记在您的问题中共享它,您很可能没有从访问参数 http 中指定任何选项,而是将 vlc 标准模块定义为这样。(就像我遇到同样问题时所做的那样)
standard{access=http,mux=mpjpeg,dst=< address >:< port >/< path >}
您正在使用 VLC 创建通过 http 传递的 mjpeg 流。感谢osgx在另一个问题中的回复,这里是描述MPJEG over HTTP的维基百科链接。基本上:
M-JPEG over HTTP 使用特殊的 mime 类型multipart/x-mixed-replace和参数boundary=* < 边界 > ***** 通知客户端,您将发送一系列由< 边界分隔的 JPEG 图像>。
适用于<boundary>的规则已由 Gumbo在这篇文章中说明,而其他一些准则(现在可能已被较新的准则淘汰)在 RFC2046 中定义
混合替换的媒体类型在关于 MIME 的维基百科文章中进行了解释
由于您放置的示例包括通过 http 流式传输的媒体内容的 mime 定义,因此可以将其定义为带有 http 访问定义的可选参数。
standard{access=http{mime=multipart/x-mixed-replace;boundary=--myboudary},mux=mpjpeg,dst=< address >:< port >/< path >}