2015-08-01 19 views
10

Tôi đang trong quá trình tìm ra cách tốt nhất là làm như sau:Truyền trực tuyến nội dung video thông qua API Web 2

Tôi có một loạt tệp cảnh quay CCTV (tệp MP4, từ Có kích thước 4MB-50MB), mà tôi muốn cung cấp qua cổng web. Suy nghĩ đầu tiên của tôi là dòng các tập tin thông qua Web API, vì vậy tôi tìm thấy các liên kết dưới đây:

http://www.strathweb.com/2013/01/asynchronously-streaming-video-with-asp-net-web-api/

Sau khi thực hiện một dự án mẫu, tôi nhận ra rằng ví dụ này được dựa trên API Web 1, và không phải Web API 2.1, đó là những gì tôi đang sử dụng. Sau khi thực hiện một số nghiên cứu thêm, tôi đã nhận được mã để biên dịch với WebAPI 2.1. sau đó tôi nhận ra rằng nếu tôi muốn làm trực tuyến Tôi không thể sử dụng các file MP4, có một số tiền hợp lý của các chi tiết kỹ thuật sau này, vì vậy đây là thread:

Best approach to real time http streaming to HTML5 video client

Có vẻ như để làm việc này tôi cần để mã hóa các tệp MP4 của tôi thành một cái gì đó như WebM, nhưng điều đó sẽ mất quá nhiều thời gian. Icecast (http://icecast.org/), là một máy chủ phát trực tuyến, nhưng tôi chưa thử nó, một lần nữa không chắc chắn nếu đây là những gì tôi cần làm.

Bây giờ tôi nghĩ về điều đó, tôi thực sự không cần phát trực tiếp, tôi chỉ cần cho phép ứng dụng khách phát tệp video thông qua trình duyệt của họ, có thể sử dụng phần tử video HTML5? Vấn đề là, ứng dụng của tôi cần phải làm việc trên IOS, vì vậy tôi nghĩ rằng có nghĩa là tôi thậm chí không thể mã hóa MP4 của tôi sang FLV và chỉ sử dụng flash.

Tất cả những gì tôi thực sự cần là có tất cả các video clip dưới dạng hình thu nhỏ trên trang web và nếu khách hàng nhấp vào một video, nó bắt đầu phát ASAP mà không phải tải xuống toàn bộ tệp. Hãy nghĩ đến tính năng "Đoạn giới thiệu phim" trên imdb.com. Đơn giản chỉ cần chơi một tập tin video, đó thực sự là những gì tôi muốn. Tôi không cần streaming trực tuyến, đó là những gì tôi nghĩ rằng WebM là cho? Một lần nữa, không chắc chắn.

Trả lời

13

Hai điều:

  1. Sử dụng một video element trong HTML của bạn (chỉ hoạt động này trong các trình duyệt VÀ iOS):

    <video src="http://yoursite.com/api/Media/GetVideo?videoId=42" /> 
    
  2. Hỗ trợ 206 PARTIAL CONTENT yêu cầu trong bạn mã Web API. Đây là rất quan trọng cho cả hỗ trợ phát trực tuyến và iOS và được đề cập trong chủ đề mà bạn đã đăng.

Chỉ cần làm theo ví dụ này:

http://blogs.msdn.com/b/webdev/archive/2012/11/23/asp-net-web-api-and-http-byte-range-support.aspx

Tóm lại:

if (Request.Headers.Range != null) 
{ 
    // Return part of the video 
    HttpResponseMessage partialResponse = Request.CreateResponse(HttpStatusCode.PartialContent); 
    partialResponse.Content = new ByteRangeStreamContent(stream, Request.Headers.Range, mediaType); 
    return partialResponse; 
} 
else 
{ 
    // Return complete video 
    HttpResponseMessage fullResponse = Request.CreateResponse(HttpStatusCode.OK); 
    fullResponse.Content = new StreamContent(stream); 
    fullResponse.Content.Headers.ContentType = mediaType; 
    return fullResponse; 
} 
-1

Đặt các tệp video tĩnh trên máy chủ web và tham chiếu chúng trong trình phát video. Bạn có thể sử dụng trình phát chuẩn của HTML (< video src = "http: //location/of/file.mp4" >) hoặc tìm kiếm điều gì đó huyền ảo - chỉ cần google cho "trình phát video html".

Để đảm bảo rằng các tệp video không phải tải xuống hoàn toàn trước khi bắt đầu phát, chỉ cần chạy chúng trước thông qua qt-faststart.

+0

không chắc chắn về cách tiếp cận này, nhưng nhờ – FaNIX

Các vấn đề liên quan