VLC 和 MJPEG 解码器流式传输(无效标头)

Posted

技术标签:

【中文标题】VLC 和 MJPEG 解码器流式传输(无效标头)【英文标题】:VLC and MJPEG Decoder streaming (invalid header) 【发布时间】:2013-02-02 03:18:24 【问题描述】:

我正在制作一个包含视频流的 WinRT 应用程序。现在我在 VLC 作为流媒体服务器和客户端上的 MJPEGDecoder lib (http://mjpeg.codeplex.com/) 来解码视频。

但是在创建 HTTP 流并从客户端连接到它之后,MJPEGDecoder 说标头无效(它需要多部分流)。 VLC-to-VLC 工作正常。

问题 1:如何解决?

问题 2:为 WinRT 创建视频流的替代方法有哪些?

【问题讨论】:

【参考方案1】:

想通了。在http://tumblr.martinml.com/post/2108887785/how-to-broadcast-a-mjpeg-stream-from-your-webcam-with的帮助下

VLC 具有设置 mime 类型和边界的选项。来自链接的配置示例

:sout=#transcodevcodec=MJPG,vb=400,width=640,height=480
:duplicatedst=stdaccess=httpmime=multipart/x-mixed-replace;
boundary=--7b3cc56e5f51db803f790dad720ed50a,mux=mpjpeg,dst=:1234/webcam.mjpg

【讨论】:

这成功地使 VGSion H.264 RTSP 相机在 Ubuntu 上与 ZoneMinder 一起工作。谢谢!【参考方案2】:

只是为了进一步详细说明您的问题/答案。 发布的答案仅链接到一个示例,但没有解释它,也没有示例本身。所以我想完成这个答案,以防其他人偶然发现它。

当您定义您的 vlc 流时,您忘记在您的问题中分享您很可能没有从访问参数 http 中指定任何选项,并且已经定义了 vlc 标准模块。 (就像我遇到同样问题时所做的那样)

standardaccess=http,mux=mpjpeg,dst=< address >:< port >/< path >

您正在使用 VLC 创建通过 http 传递的 mjpeg 流。 感谢osgx 回复another question,这里是描述MPJEG over HTTP 的***链接。基本上:

M-JPEG over HTTP 使用带有参数 boundary=***** 的特殊 mime 类型 multipart/x-mixed-replace 通知客户端*,您将发送一系列由 分隔的 JPEG 图像。

适用于 的规则已在this post 中由 Gumbo 和其他一些指南,现在可能已被较新的指南淘汰,在 RFC2046 中定义

混合替换媒体类型在***article on MIME中有解释

由于您放置的示例包含通过 http 流式传输的媒体内容的 mime 定义,因此可以将其定义为 http 访问定义的可选参数。

standardaccess=httpmime=multipart/x-mixed-replace;boundary=--myboudary,mux=mpjpeg,dst=< address >:< port >/< path >

【讨论】:

以上是关于VLC 和 MJPEG 解码器流式传输(无效标头)的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 http 协议使用 ffmpeg 流式传输

无法从 nginx-rtmp 获得破折号流式传输

在 Android 上获取 IP Cam 视频流 (MJPEG)

如何以 mp3 格式从麦克风流式传输声音?

从 Axis IP 摄像机重新流式传输 MJPEG

既然不再支持 VLC 插件,如何在 Firefox 和 Chrome 中流式传输 RTSP 实时视频?