gpt4 book ai didi

c# - 在 C# 中创建 MJPEG 视频流

转载 作者:IT王子 更新时间:2023-10-29 04:22:18 33 4
gpt4 key购买 nike

我有图像从远程视频源以每秒约 5 帧的速度作为 JPEG 图像发送到我的数据库。我正在尝试弄清楚如何将这些图像转换成视频格式,以便我可以将实时视频源流式传输到 Silverlight。

创建 MJPEG 流似乎很有意义,但我遇到了一些问题。首先,我试图通过 HTTP 请求进行流式传输,所以我没有处理套接字,但也许这会破坏我的代码。

如果我尝试从 QT 浏览我的流,我会收到视频错误,媒体播放器显示第一帧图像并且 Silverlight 崩溃:)

这是流式传输的代码 - 因为我使用这种方式使用的内容类型只有在我知道它不理想并且可能是根本原因时才能发送。所有图像都通过 LINQ2SQL 对象传入。

我已经尝试在 Silverlight 中简单地更新图像控件的图像源,但闪烁是 Not Acceptable 。如果 Silverlight 不支持 MJPEG,那么继续下去就没有意义了,但它看起来支持。我确实可以访问传入的 h.264 帧,但通过 MP4 似乎更复杂。

    Response.Clear();
Response.ContentType = "multipart/x-mixed-replace; boundary=--myboundary";
ASCIIEncoding ae = new ASCIIEncoding();
HCData data = new HCData();
var videos = (from v in data.Videos
select v).Take(50); // sample the first 50 frames
foreach (Video frame in videos)
{
byte[] boundary = ae.GetBytes("\r\n--myboundary\r\nContent-Type: image/jpeg\r\nContent-Length:" + frame.VideoData.ToArray().Length + "\r\n\r\n");
var mem = new MemoryStream(boundary);
mem.WriteTo(Response.OutputStream);
mem = new MemoryStream(frame.VideoData.ToArray());
mem.WriteTo(Response.OutputStream);
Response.Flush();
Thread.Sleep(200);
}

谢谢!

编辑:我的流在 firefox 中工作,所以如果我浏览该页面,我会看到视频!但没有别的接受格式。不是 IE、SL、媒体播放器 - 什么都不是。

最佳答案

我很久以前(3-4 年前)做过 MJPEG,现在我正在挠头试图记住细节,但我就是记不住。但是,如果可能的话,我会建议找到某种流式传输 MJPEG 内容并启动 wireshark/ethereal 的网站,看看您通过网络获得了什么。我的猜测是您缺少一些必需的 HTTP header ,而 firefox 对此稍微宽容一些。

如果您无法在 Internet 上找到示例 MJPEG 流,许多网络摄像头都有可以为您提供 MJPEG 流的软件。我使用的应用程序是多个安全摄像头的控制台,所以我知道这是所有类型摄像头的常见实现(如果它们支持 Web 界面)。

关于c# - 在 C# 中创建 MJPEG 视频流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/216664/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com