Hiện tại tôi có luồng trực tiếp đang hoạt động bằng cách sử dụng webapi. Bằng cách nhận một luồng flv trực tiếp từ ffmpeg và gửi nó thẳng đến máy khách bằng PushStreamContent. Điều này hoạt động hoàn toàn tốt nếu trang web đã mở khi luồng bắt đầu. Vấn đề là khi tôi mở một trang khác hoặc làm mới trang này, bạn không còn có thể xem luồng nữa (luồng vẫn đang được gửi đến ứng dụng khách). Tôi nghĩ rằng đó là do một cái gì đó mất tích từ đầu dòng nhưng tôi không chắc chắn phải làm gì. Bât cư thông tin được cung câp nao cung được la sự suât hiện tuyệt vơi.Phát trực tuyến FLV trong C# WebApi
Mã cho khách hàng đọc dòng
public class VideosController : ApiController
{
public HttpResponseMessage Get()
{
var response = Request.CreateResponse();
response.Content = new PushStreamContent(WriteToStream, new MediaTypeHeaderValue("video/x-flv"));
return response;
}
private async Task WriteToStream(Stream arg1, HttpContent arg2, TransportContext arg3)
{
//I think metadata needs to be written here but not sure how
Startup.AddSubscriber(arg1);
await Task.Yield();
}
}
Mã cho nhận được luồng và sau đó gửi cho khách hàng
while (true)
{
bytes = new byte[8024000];
int bytesRec = handler.Receive(bytes);
foreach (var subscriber in Startup.Subscribers.ToList())
{
var theSubscriber = subscriber;
try
{
await theSubscriber.WriteAsync(bytes, 0, bytesRec);
}
catch
{
Startup.Subscribers.Remove(theSubscriber);
}
}
}
Tìm thấy trình đọc siêu dữ liệu FLV đơn giản: http://johndyer.name/flash-flv-meta-reader-in-net-c/ – jgauffin