gpt4 book ai didi

c# - 从 ASP.NET 中的 Seek Position 流式传输 MP4 视频

转载 作者:太空宇宙 更新时间:2023-11-03 20:27:20 27 4
gpt4 key购买 nike

我在从搜索位置流式传输 mp4 视频时遇到问题。它从一开始就正确地流式传输。

第一个问题是当 mp4 视频通过 jw player flash player 流式传输时。当用户单击时间栏开始从视频的任何其他部分流式传输 mp4 视频时,jw 播放器将发送开始参数以及时间信息,例如

http://[url]/stream/mp4.ashx?file=Madagascar3-trailer-48861c.mp4&start=53.71

所以 jwplayer 发送时间间隔来寻找 mp4 流。

我正在使用以下代码将大约时间间隔转换为字节,因为搜索将从字节开始。

 double total_duration = Convert.ToDouble(context.Request.Params["d"]);
double startduration = Convert.ToDouble(context.Request.Params["start"]);
double length_sec = (double)size / total_duration; // total length per second
start = (long)(length_sec * startduration);

这是我用来从搜索位置开始流式传输的完整示例代码,例如 53.71

private void ChunkDownload(string fullpath, HttpContext context)
{
long size, start, end, length, fp = 0;
using (StreamReader reader = new StreamReader(fullpath))
{
size = reader.BaseStream.Length;
start = 0;
end = size - 1;
length = size;

double total_duration = Convert.ToDouble(context.Request.Params["d"]);
double startduration = Convert.ToDouble(context.Request.Params["start"]);
double length_sec = (double)size / total_duration; // total length per second
start = (long)(length_sec * startduration);

context.Response.AddHeader("Accept-Ranges", "0-" + size);
long anotherStart = start;
long anotherEnd = end;

// End bytes can not be larger than $end.
anotherEnd = (anotherEnd > end) ? end : anotherEnd;
// Validate the requested range and return an error if it's not correct.
if (anotherStart > anotherEnd || anotherStart > size - 1 || anotherEnd >= size)
{

context.Response.AddHeader("Content-Range", "bytes " + start + "-" + end + "/" + size);
throw new HttpException(416, "Requested Range Not Satisfiable");
}
start = anotherStart;
end = anotherEnd;

length = end - start + 1; // Calculate new content length
fp = reader.BaseStream.Seek(start, SeekOrigin.Begin);
context.Response.StatusCode = 206;

}
// Notify the client the byte range we'll be outputting
context.Response.AddHeader("Content-Range", "bytes " + start + "-" + end + "/" + size);
context.Response.AddHeader("Content-Length", length.ToString());

context.Response.WriteFile(fullpath, fp, length);
context.Response.End();

}

但它无法通过播放器或直接检查流 url 将其识别为有效的 mp4 流。

谁能帮我解决这个问题。

最佳答案

google了一下,没有找到相关的API。

如果问题无法解决,您可以检查解决方法。

如果可能,请提供更多信息以供进一步研究。

关于c# - 从 ASP.NET 中的 Seek Position 流式传输 MP4 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9843166/

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