1

我正在 XNA 中为 Windows Phone 编写一个应用程序......我想读取存储在应用程序资源中的 MJPEG 流。我找到了许多关于如何通过 WebHttpRequest 从网站获取 MJPEG 的示例,如下所示:

        // get the response
        HttpWebRequest request = (HttpWebRequest) asyncResult.AsyncState;
        HttpWebResponse response = (HttpWebResponse) request.EndGetResponse(asyncResult);

        try {
            // find boundary value
            string contentType = response.Headers["Content-Type"];

            if (!String.IsNullOrEmpty(contentType) && !contentType.Contains("=")) {
                throw new FormatException("Invalid content-type header.  The source is likely not returning a proper MJPEG stream.");
            }

            string boundary = response.Headers["Content-Type"].Split('=')[1].Replace("\"", "");
            byte[] boundaryBytes = Encoding.UTF8.GetBytes(boundary.StartsWith("--") ? boundary : "--" + boundary);

            using (Stream stream = response.GetResponseStream()) {
                using (BinaryReader binaryReader = new BinaryReader(stream)) {

                   // code to parse the MJPEG stream
                }
            }
        } finally {
            response.Close();
        }

...但这并不是我想要的。下面是我从应用程序资源中将 MJPEG 作为二进制流读取的代码:

    private void ParseMjpeg(object uri)
    {
        // what the corresponding code for determining the boundary bytes in my local MJPEG?
        byte[] boundaryBytes = ???

        using (Stream stream = TitleContainer.OpenStream(uri.ToString())) {
            using (BinaryReader binaryReader = new BinaryReader(stream)) {

                // code to parse the MJPEG stream as before: OK
            }
        }
    }

如何在上面的代码中确定边界字节?任何帮助将非常感激。

谢谢,j3d

4

1 回答 1

1

这应该会让你的生活更轻松。据我了解,DLL 应该为您提供您需要的大部分内容。

http://channel9.msdn.com/coding4fun/articles/MJPEG-Decoder

于 2012-06-27T21:54:52.943 回答