У меня есть проигрыватель Windows Media, встроенный в представление моей веб-страницы:
<div id="divCourseVideo" style="width:100%;margin:0 auto;" class="container">
<OBJECT style="display:inline-block" ID="CoursePlayer" HEIGHT="400" WIDTH="400" CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" type="video/x-ms-wmv">
<param name='URL' value="@Url.Action("ShowMovie", "OLT", new { courseId = Model.ID })" />
<param name='autoStart' value="true" />
<param name='currentPosition' value="false" />
<param name='showControls' value="true" />
</OBJECT>
</div>
Действие ShowMovie извлекает видеопоток из базы данных и отправляет его в представление следующим образом:
public void ShowMovie(string courseId)
{
CourseVideo video = Repository.GetCourseVideoStream(courseId);
var bytesinfile = new byte[video.VideoStream.Length];
video.VideoStream.Read(bytesinfile, 0, (int)video.VideoStream.Length);
ControllerContext.HttpContext.Response.BinaryWrite(bytesinfile);
}
Когда я использую видео размером около 10 КБ, оно будет воспроизводиться нормально. Но если я использую файл размером около 137 КБ, файл никогда не воспроизводится. Он слишком большой?
Когда я использую F12, чтобы увидеть сетевую активность, я вижу, что файл пытается спуститься как text/html. Почему это? Я также вижу, что функция GET прерывается. Почему это? Я увеличил значение executeTimeout безрезультатно.
Информация от Napuza была хорошей. Я смог получить правильный тип контента, и кажется, что весь файл был передан в браузер, но он никогда не воспроизводится.