사람들이 오디오 및 비디오 파일에 액세스 할 수있는 웹 사이트를 개발 중입니다. 나는 다음과 같이 두 개의 액션 메소드로 구성 파일을 다운로드 코드, ...ASP.NET MVC를 사용하여 비디오 파일을 스트리밍하려면 어떻게해야합니까?
public ActionResult GetAudioFile(int id) {
return GetFile(id, true);
}
public ActionResult GetVideoFile(int id) {
return GetFile(id, false);
}
private ActionResult GetFile(int id, bool isAudio) {
// Code to get info about the file, etc omitted for clarity
string downloadFileName = // full path to audio/video file
byte[] bytes = GetFileBytes(fileName); // also omitted
return File(bytes, (isAudio ? "audio/mpeg" : "video/mp4"), downloadFileName + (isAudio ? ".mp3" : ".mp4"));
}
이 잘 작동을 모두 가지고 있고, 나는 파일 유형 중 하나를 다운로드 할 수 있습니다.
이제 오디오 파일을 듣기위한 하나와 비디오를보기위한 하나의 면도기 뷰를 추가하려고합니다. 나는 오디오보기에서 다음을했고, 그것은 그러나
<video src='@Url.Action("GetVideoFile", "Search", new {ID = @Model.ID})'
controls preload="auto" width="640" height="368"></video>
, 이것은 시스템을 제공합니다 ...
<audio src='@Url.Action("GetAudioFile", "Search", new {ID = @Model.ID})'
controls preload="auto"></audio>
내가 다음 비디오보기에 대해 동일한 작업을 수행하려고 ... 잘 작동 .OutOfMemoryException 그것을 실행할 때. 비디오 평균 약 400-500Mb.
Response.ContentType = "video/mp4";
Response.AddHeader("content-disposition", "attachment; filename=myvideo.mp4"));
Response.TransmitFile(fileName);
Response.End();
return null;
그때 다음과 같이 Response.TransmitFile 방법을 사용하여 시도
... 그러나 그것은 작동하지 않습니다. Chrome에서는 콘솔에서 "문서로 해석되었지만 MIME 유형 비디오/mp4로 전송 된 리소스"라는 메시지가 표시되고 FireFox에서는 비디오 컨트롤에서 동일한 메시지가 표시됩니다.
누구든지 어떻게 해결할 수 있습니까? 이상적으로, 파일을 스트리밍하여 파일이 완전히 다운로드 될 때까지 기다리지 않고 첫 번째 바이트가 사용자에게 도달하자 마자 재생이 시작되도록하는 것이 좋습니다.
몇 가지 자바 스크립트 비디오 플레이어를 사용해 보았지만 그 중 어떤 것도 성공했습니다.
업데이트 업데이트가 제대로 작동하지 않는다면 비디오 파일에서 웹 브라우저를 직접 가리켜봤을 때 오디오 플레이어처럼 보이지만 비디오는 보이지 않습니다. 재생 버튼을 클릭해도 아무런 변화가 없습니다. 도움이되는지 확실하지 않습니다.