2015-06-10 16 views
5

Tôi sử dụng WebRTC trong một trường hợp trong đó luồng video của khách hàng được ghi lại trên máy chủ của bên thứ ba https://tokbox.com/. Tôi muốn đặt một số loại hình mờ trong video đã ghi.Làm cách nào để sửa đổi nội dung của đoạn video theo dõi WebRTC MediaStream?

tra đưa tôi vào trang này http://w3c.github.io/webrtc-pc/#mediastreamtrack và có vẻ như nó là kỹ thuật tốt vì nó nói rằng:

Một MediaStream mua sử dụng getUserMedia() là, theo mặc định, tiếp cận với một ứng dụng. Điều này có nghĩa là ứng dụng có thể truy cập nội dung của bản nhạc, sửa đổi nội dung của chúng và gửi phương tiện đó tới bất kỳ phương tiện nào mà nó chọn.

Đây chính xác là những gì tôi cần, nhưng tôi không tìm thấy bất kỳ ví dụ hoặc giải thích về chức năng này. Tôi muốn nhận được một số lời khuyên từ các chuyên gia WebRTC.

+0

WebRTC chỉ giao dịch với việc chụp và phân phối nội dung và không quan tâm đến bất kỳ xử lý bài đăng nào. Thêm watermark là một vấn đề liên quan đến codec video - VP8 hoặc VP9. AFAIK không có cách nào để thêm hình mờ mà không chuyển mã video. Nhưng có thể có một số giải pháp thương mại thực hiện điều này mà không cần chuyển mã vì đây là vấn đề thường gặp. –

Trả lời

6

Bạn cần sử dụng canvas để định tuyến video từ getUserMedia, sửa đổi nó ở đó và sau đó sử dụng canvas.captureStream() để biến nó trở lại MediaStream. Điều này là rất tốt - ngoại trừ canvas.captureStream(), trong khi đồng ý trong WG chưa thực sự được đưa vào spec. (Có một yêu cầu kéo với lời nói dài được đề xuất mà Mozilla đã viết.)

Theo như triển khai: việc thực hiện ban đầu của captureStream() vừa hạ xuống trong Firefox Nightly (41) và nó vẫn ở phía sau tiền tố cho đến khi lỗi hoặc hai được cố định. Bạn có thể bật nó bằng canvas.capturestream.enabled trong about: config. Bạn có thể xem bản trình diễn tại Mozilla's test page for captureStream().

Làm điều đó mà không canvas.captureStream() sẽ khó khăn; cách tốt nhất bạn nên làm là getUserMedia-> canvas-> và sau đó sử dụng video.captureStream() (hoặc captureStreamUntilEnded()) - tuy nhiên, video.captureStream cũng đang chờ chấp nhận chính thức. Tuy nhiên, Mozilla đã có video.captureStream() một thời gian và tôi nghĩ nó hoạt động trong FF 38 (bản phát hành hiện tại).

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