如何使用ffmpeg和c#进行mjpeg流式传输

时间:2017-12-19 07:26:55

标签: c# ffmpeg mjpeg

我正在尝试创建rtmp流的预览。但RTMP播放占用带宽作为源,我想用ffmpeg和c#做mjpeg流。有可能吗?

我正在尝试创建一个用户可以监控流的网页。为此,我不需要使用RTMP网址来观看,因为它需要越来越多的带宽。

所以,我的想法是捕获图像并以每秒1帧的顺序速率显示它们。通过这种方式,用户可以监控。

我尝试了各种方法,比如使用mjpeg

ffmpeg.exe -i renditiontest.mp4 -c:v mjpeg -q:v 31 -an sample.avi

现在,生成输出文件。但是,它占据了硬盘。

因此,下一步是创建覆盖以前图像的图像

ffmpeg.exe -y -i renditiontest.mp4 -f image2 -updatefirst 1 sample2.jpg

现在,我尝试创建一个流,它将不断读取图像并将其作为C#中的响应写入。

using (WebClient webClient = new WebClient())
                {
                    string url = "http://localhost/probe_VOD/mjpg/sample2.jpg";
                    var memoryStream = new MemoryStream(webClient.DownloadData(url));

                    response.Headers.AcceptRanges.Add("bytes");
                    response.StatusCode = HttpStatusCode.OK;
                    response.Content = new StreamContent(memoryStream);
                    //response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("render");
                    //response.Content.Headers.ContentDisposition.FileName = "sample.jpg";
                    response.Content.Headers.ContentType = new MediaTypeHeaderValue("multipart/x-mixed-replace; boundary=myboundary");
                    response.Content.Headers.ContentLength = memoryStream.Length;
                }
                return response; 

请让我知道如何实现这一点。

0 个答案:

没有答案