Phát trực tuyến video qua websockets bằng JavaScript


84

Cách nhanh nhất để phát video trực tiếp bằng JavaScript là gì? WebSockets qua TCP có phải là giao thức đủ nhanh để truyền phát video 30fps không?


1
Gert G: Bạn muốn giới thiệu điều gì? Tôi muốn giữ mức tiêu thụ bộ nhớ tương đối thấp, đó là lý do tại sao JS (cập nhật canvas HTML5) dường như là một lựa chọn tốt hơn, nếu nó có thể cung cấp tốc độ đủ tốt.
SMiLE

1
Rất tiếc, tôi đã quên đề cập rằng tôi quan tâm đến phát trực tiếp, không chỉ phát trực tiếp một số video được lưu trữ trong tệp. <video> có thể cung cấp điều đó không?
SMiLE

2
Tôi sẽ không quá quan tâm đến phần phát trực tuyến , mà là cách bạn hiển thị video được phát theo cách như vậy. Điều đó thậm chí có thể?
deceze

4
Đối với những người phản đối tốc độ, đây là những ví dụ về tốc độ khung hình và video nhanh khi sử dụng HTML 5: The Wilderness Downtown (Chrome, video) thewildernessdowntown.com và Quake trong HTML 5 (Chrome, tốc độ khung hình) techcrunch.com/2010/04/01/ google-html5-quake Một vài bằng chứng về khái niệm. Nó chỉ sẽ được cải thiện. Ai đó sẽ sớm nhảy vào cuộc đua và gặt hái những lợi ích từ việc trở thành người chơi sớm trên thị trường, nếu ai đó chưa có. Tôi sẽ nín thở vì IE? I dunno '
John K

2
Cảm ơn vì những ví dụ, John K.
SMiLE

Câu trả lời:


79

WebSockets qua TCP có phải là giao thức đủ nhanh để truyền phát video 30fps không?

Vâng .. nó là, hãy nhìn vào dự án này . Websockets có thể dễ dàng xử lý luồng video HD .. Tuy nhiên, bạn nên sử dụng Truyền phát thích ứng. Tôi giải thích ở đây cách bạn có thể thực hiện nó.

Hiện tại, chúng tôi đang làm việc trên một ứng dụng nhắn tin tức thì dựa trên web với hỗ trợ trò chuyện, chia sẻ tệp và video / webcam. Với một số bit và thủ thuật, chúng tôi đã phát trực tuyến phương tiện thông qua websockets (đã sử dụng HTML5 Media Capture để nhận luồng từ webcam của chúng tôi).

Bạn cần xây dựng a stream APIvà a Media Stream Transceiverđể kiểm soát việc xử lý và vận chuyển phương tiện liên quan.


4
Điều này là tuyệt vời, cảm ơn! Tôi đoán tôi sẽ thử một cách triển khai rất cơ bản của tính năng phát trực tuyến video mà hoàn toàn không thích ứng, hãy xem kết quả và tiến hành tương ứng; biết rằng điều này là có thể, mặc dù khá đáng khích lệ! Hướng dẫn của bạn cũng rất hữu ích.
SMiLE,

1
Vâng .. đó là một thực hành tốt để bắt đầu với một ứng dụng đơn giản. Bạn sẽ phải tự mình xây dựng hầu hết công nghệ cần thiết để phát trực tiếp, điều này có lẽ không phải là một lựa chọn khi bạn: A. chỉ bắt đầu và B. ở một mình. Chúc may mắn.
Wouter Dorgelo

@ Mr.Pallazzo Bạn đang xây dựng ứng dụng để làm gì? Một vụ làm ăn? Bất kỳ cơ hội nào tôi có thể liên lạc với bạn về cách bạn đang làm việc đó?
Alistair

@WouterDorgelo Hiệu suất ứng dụng của bạn như thế nào khi truyền phát HD qua websockets?
quarks

Chúng tôi có thể quay video CCTVvà hiển thị trực tiếp trên trang web bằng cách sử dụng Javascriptkhông?
shaijut


0

Để trả lời câu hỏi:

Cách nhanh nhất để phát video trực tiếp bằng JavaScript là gì? WebSockets qua TCP có phải là giao thức đủ nhanh để truyền phát video 30fps không?

Có, Websocket có thể được sử dụng để truyền hơn 30 khung hình / giây và thậm chí 60 khung hình / giây.

Vấn đề chính với Websocket là nó ở mức thấp và bạn phải giải quyết các vấn đề khác ngoài việc chỉ truyền các đoạn video. Nói chung, đó là một phương tiện tuyệt vời cho video và cả âm thanh.


Vậy còn WebRTC thì sao? Nó (như w3c) đang hoạt động trên kết nối UDP và nếu chúng tôi bị mất gói tin nào đó, nó sẽ không thành vấn đề. Mặt khác, WebSocket hướng đến kết nối và nó có thể làm phiền người dùng do độ trễ sẽ xảy ra.
M. Rostami

-1

Nó chắc chắn có thể tưởng tượng được nhưng tôi không chắc là chúng ta đang ở đó. Trong thời gian chờ đợi, tôi khuyên bạn nên sử dụng một cái gì đó như Silverlight với Truyền phát mượt mà IIS . Silverlight dựa trên plugin, nhưng nó hoạt động trên Windows / OSX / Linux. Một ngày nào đó phần tử HTML5<video> sẽ là con đường để đi, nhưng điều đó sẽ thiếu hỗ trợ trong một thời gian ngắn.


Cám ơn phản hồi của bạn. Tôi đồng ý rằng Silverlight và Flash có lẽ là những lựa chọn tốt hơn vào thời điểm này. Tôi đoán tôi quan tâm đến tính năng phát trực tuyến Javascript vì nó mở ra nhiều khả năng tương tác hơn giữa người dùng và máy chủ (truyền video).
SMiLE

Tôi phải đồng ý với Josh .. Nếu bạn đang rất cần phát trực tuyến phương tiện ngay bây giờ, đừng sử dụng HTML5.
Wouter Dorgelo

6
Đề phòng mọi người vẫn đang đọc cái này: First of Silverlight không bao giờ hỗ trợ hệ thống Linux hoặc di động. Hỗ trợ Linux silverlight đơn giản là chưa bao giờ tồn tại. Thứ hai, vì các câu trả lời mới hơn đã chỉ ra một cách chính xác, phát trực tuyến video HTML5 / MSE hiện rất khả thi trong các trình duyệt hiện đại và nên được ưu tiên trong hầu hết các trường hợp so với bất kỳ loại phương pháp tiếp cận dựa trên plugin nào.
ntninja

3
Và nếu ai vẫn đang đọc nó, ngày đó đã đến. Vì tình yêu của thần, đừng sử dụng ánh sáng bạc
Zannith
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.