Camera Streaming với NodeJS



  • Mình đang làm 1 project về Camera Streaming, mình đang bị vướng ở chỗ là làm sao khi mình stream thông qua webcam của laptop thì từ điện thoại hay bất kỳ thiết bị nào khác, mình có thể stream đồng thời cùng 1 lúc vậy ạ?
    Mong mọi người giúp đỡ ạ.


  • Global Moderator

    Topology của mạng bạn dự định thiết kế như thế nào ? Mesh, star, MCU hay như thế nào ?

    Mình cũng đang xây dựng một mã nguồn mở có thể thực hiện việc này. Bạn có thể xem demo ở đây https://roomrtc.github.io/demo

    Tech-nông
    Twitter: @nhubaovu
    Profile: about.me/vunb

    1


  • Anh @Vũ có tut nào về live streaming không anh ? Làm sao combo WebRTC với socket.io
    Em cũng chưa hiểu lắm về WebRTC, chỉ biết đại khái là nó upgrade socket.io từ client-server-client thành client-client (p2p)



  • Nếu trên nền tảng web thì bạn có thể dùng webRTC để lấy dữ liệu của camera.
    => Sau đó cắt file theo khoảng 20/100s => Dữ liệu xuông sẽ là dạng buffer của JS. vì là đồng bộ với NodeJS về mặt dữ liệu ở backend.
    => Trên backend ở server socket.io bạn viết bạn dùng fs tạo một file write stream.
    => Sau đó cứ đè chồng buffer gửi liên tục từ client lên server.
    => Server bạn sẽ dụng proxy nginx RTMP để streaming nó đến các thiết bị khác.
    Note(Bạn phải tính tốc độ xử lí ghi file của server nữa.
    Nginx RTMP: https://github.com/arut/nginx-rtmp-module
    Example của sam sutton về lấy dữ liệu và lưu xuống. Ở đây bạn sẽ không lưu xuống mà sẽ dùng socket.io để push lên server.
    https://rawgit.com/Miguelao/demos/master/mediarecorder.html
    Example cuả mình về cái này. Lúc trước mình có nghiên cứu nó lâu rồi và viết thành công. Tuy nhiên bản github này là bản nháp của mình trước khi hoàn thiện. Nhưng vì bận quá mình ko update code đc :D
    https://github.com/cptrodgers/webRTC-Streaming

    Nguyen (Rodgers) Hien.
    Sent from Wood-PC.

    0


  • À bạn phải sử dụng socket.io > 1.0 mới sp file data buffer nhé. :D

    Nguyen (Rodgers) Hien.
    Sent from Wood-PC.

    0


  • Nếu trên điện thoại thì bạn cố gắng dùng chromium. Vì webRTC có hỗ trợ cho cái này. Tuy nhiên thì mình thấy tài liệu WebRTC cho IOS là rất cũ rồi. Và không chạy được. CÒn android thì được update khá đầy đủ (vào tháng 12 năm 2015). Hiện nay thì mình không biết. Nếu bạn có phương án cho android + ios thì chỉ mình với :D :D.

    Nguyen (Rodgers) Hien.
    Sent from Wood-PC.

    0

  • Global Moderator

    @rocketspacer Socket.io nhiệm vụ chính làm quá trình điều khiển tín hiệu. Có nhiều option khác, ví dụ SIP, XMPP, ... bạn có thể tham khảo bài codelab hướng dẫn này

    Ngoài ra bạn đọc thêm về kiến trúc của WebRTC để hiểu hơn, phần api nào sẵn có và phần nào mình phải cài đặt mà mình note ở đây

    Tech-nông
    Twitter: @nhubaovu
    Profile: about.me/vunb

    2

  • Global Moderator

    @Nguyen-Hien Đối với mobile bạn có thể lựa chọn phương án sử dụng hybrid app sử dụng cordova plugins hoặc code native.

    Tham khảo:

    Tech-nông
    Twitter: @nhubaovu
    Profile: about.me/vunb

    1


  • Cám ơn a Vũ. Hồi đó làm chưa nghĩ đến hybrid app :D.
    Bây giờ nếu chọn nữa React Native và Ionic thì a sẽ chọn thằng nào để viết app. Do sắp tới e sẽ có dự định code một app về du lịch. Hiện tại đang phân vân giữa hai nền tảng này.

    Nguyen (Rodgers) Hien.
    Sent from Wood-PC.

    0

  • Global Moderator

    @Nguyen-Hien Mình thì thân thiện với Angular hơn nên hiện đang sử dụng Ionic. Nếu bạn quan tâm đến hiệu năng và native component thì nên chọn React Native :D

    Tech-nông
    Twitter: @nhubaovu
    Profile: about.me/vunb

    0


  • Hi mọi người.
    Mình cũng đang làm vụ live stream này. Có đọc qua suggest của bạn @Nguyen Hien, tuy nhiên nếu sử dụng Socket.io + WebRTC thì clients chỉ khoảng 50 viewers là bị crash.

    Mình đang muốn làm với tầm > 5k Viewers thì nên sử dụng công nghệ nào? mình có research trên mạng nhưng chưa tìm ra đc giải pháp nào khả thi.

    Thanks all,



  • Chào các bạn,

    Mình đã làm với Live Stream từ IP Camera như sau:

    1. Dùng NGINX-based Media Streaming Server: https://github.com/arut/nginx-rtmp-module
    2. Dùng kết hợp với FFMPEG: https://ffmpeg.org/
    3. Rùi dùng Nodejs để control thao tác của Users, cũng như xử lý phần call ffmpeg vào rtmp của nginx để tạo ra stream với HLS có thể dùng được mọi thiết bị. Cách này là với 1 luồng stream từ IP Camera sẽ tạo ra 1 luồng stream HLS, Users sẽ load file HLS (m3u8).
      Nhược điểm: Có độ trễ tầm khoản 5-10s.
    4. Client để load view HLS (m3u8) dùng: http://clappr.io/

    P.s: Mình đã triển khai cho công ty của mình với 20 IP Camera. Nếu dự án bạn lớn thì các bạn có thể tạo load balancing để chia tải.



  • @nqtoan86 Chào bạn.

    Hiện tại mình cũng đang chuẩn bị làm dự án live stream one-way dạy học trực tuyến: 1 giáo viên giảng dạy và phát video trực tuyến và các học viên có thể vào xem (giống kiểu live stream facebook).

    Mình chưa có kinh nghiệm trong vấn đề này. Mình có tìm hiểu thì có webrtc kết hợp với nodejs socket io nhưng có vẻ không ổn lắm.

    Bác có kinh nghiệm chia sẻ em với. Sử dụng công nghệ gì? Phía client phải xử lý những gì, phía server phải làm gì?

    Thank bạn nhiều!



  • VP9 VIỆT NAM CHIÊU MỘ SENIOR DEV LƯƠNG 1000$- 3000$.
    Công ty Cổ phần VP9 Việt Nam cần chiêu mộ nhân tài lập trình viên, siêu nhân code thành thạo 1 trong các ngôn ngữ: PHP, Android, Node Js, C, C++, Java.
    Lương tỉ lệ thuận theo năng lực 1000$-3000$. Làm việc tại 72 Trần Đăng Ninh, Cầu Giấy, Hà Nội.
    Làm việc trong môi trường thoải mái, cơ hội thăng tiến rõ ràng.
    Gửi CV trực tiếp: [email protected]
    Hoặc liên hệ hotline: 0919822986. Skype: vuminhhai99
    Inbox trực tiếp để được giải đáp thắc mắc nhé!


Log in to reply