C# 通过HttpHandler发送视频文件片段

C# 通过HttpHandler发送视频文件片段,c#,video,video-streaming,httphandler,C#,Video,Video Streaming,Httphandler,我是一名.Net开发人员,为特定公司的内部网编写了CMS系统。 我们的客户可以在那里上传视频和其他媒体,并让其员工和客户与其他信息一起查看。 我们使用标准的Httphandler从服务器的HDD获取上传的视频,并将其发送到浏览器。 因此,我们可以将此处理程序用作html5 src属性的目标。 现在,我收到了一个类似于“模拟”视频流的请求。其思想是,客户端将视频上传为文件,设置一个特定的开始日期,从该日期开始视频应该是可查看的,然后对视频的每个请求应该只返回从startdate到now的视频片段。

我是一名.Net开发人员,为特定公司的内部网编写了CMS系统。 我们的客户可以在那里上传视频和其他媒体,并让其员工和客户与其他信息一起查看。 我们使用标准的Httphandler从服务器的HDD获取上传的视频,并将其发送到浏览器。 因此,我们可以将此处理程序用作html5 src属性的目标。 现在,我收到了一个类似于“模拟”视频流的请求。其思想是,客户端将视频上传为文件,设置一个特定的开始日期,从该日期开始视频应该是可查看的,然后对视频的每个请求应该只返回从startdate到now的视频片段。 有点像是假装这段视频是一条独立的直播流

我尝试调整HttpHandler来计算startdate和当前请求时间之间的秒数,将其乘以视频的比特率,然后简单地从流中截取x字节(例如使用Stream.seek),但生成的数据没有被Brwosers识别为有效的视频流。我猜这是因为缺少(切掉)标题信息和关键帧等

有谁知道有哪个库允许我这么做(将视频切成片而不写入硬盘,我不想让一个视频文件存放在我的httphandler上的每个请求中)

视频是mp4格式的,我希望避免转码带来的额外开销(就像在流媒体中使用VLC一样)

关于这个话题有什么想法吗,我有点迷路了

提前谢谢。 克里斯

澄清: 我不知道事先要切断多少视频,这取决于请求流的时刻。 公式很简单:请求的日期(Datetime.Now)——配置的视频开始时间。必须从视频开始“跳过”此时间跨度。
理想情况下,我想要一些库,它允许我将文件作为文件流加载,跳过x秒,并将剩余的字节/帧写入httphandler的输出。但我不知道如何做到这一点,因为VLC和FFMPEG似乎只支持通过写入文件进行切片,而不将切片数据作为流提供给我…

最简单的方法是在上传时直接剪切视频。如果需要保留原始版本,则保存原始版本和剪切版本,并仅为用户提供剪切版本。如果没有一个或另一个开销,在运行中这样做是不可行的,至少它不容易实现。我不能在上传时剪切视频,因为我不知道事先要剪切多少。例如:今天上传视频,开始日期设置为明天11点。如果有人在11点15分接通,我必须为他切断前15分钟的通话。另一个访客连接11:05需要视频,只有5分钟的间隔,依此类推。啊,我误解了。在这种情况下,您可以将视频转换为HLS(如果它们兼容,编解码器可能会保持不变),HLS本质上是分块的,然后在需要时管理可用的分块。您应该能够使用它从静态数据中伪造“实时”流。