2015-06-09 46 views
13

Tôi đang cố phát trực tiếp ở 640x480 từ Chrome trên Android bằng WebRTC và video bắt đầu lúc đó, nhưng độ phân giải sẽ giảm xuống 320x240.Tại sao độ phân giải video thay đổi khi phát trực tiếp từ Android qua WebRTC

Dưới đây là các thông số getUserMedia được gửi:

"getUserMedia": [ 
    { 
    "origin": "http://webrtc.example.com:3001", 
    "pid": 30062, 
    "rid": 15, 
    "video": "mandatory: {minWidth:640, maxWidth:640, minHeight:480, maxHeight:480}" 
    } 

Câu hỏi của tôi là tại sao độ phân giải rơi? Khi tôi thử nó từ Chrome trên máy Mac của tôi mà không xảy ra. Tôi muốn thực hiện các điều chỉnh sao cho độ phân giải video không thay đổi.

video frames dumped using ffmpeg

chrome://webrtc-internals text dump

Tôi đang sử dụng Licode WebRTC của máy chủ streaming, nhưng cũng đã thấy những hành vi tương tự sử dụng Kurento.

+0

Tôi biết rằng Vp8 tự động thay đổi kích thước khung do độ trễ (mạng hoặc xử lý). –

Trả lời

10

getUserMedia ràng buộc chỉ ảnh hưởng đến phương tiện được yêu cầu từ trình duyệt đến phần cứng và được trả về dưới dạng luồng. Các ràng buộc getUserMedia không có bất kỳ ảnh hưởng nào đối với những gì được thực hiện cho luồng đó sau đó (tức là khi nó được truyền qua kết nối). Sự xuống cấp bạn đang nhìn thấy ở trong lớp PeerConnection, không phải trong lớp getUserMedia. Sự xuống cấp được kích hoạt bởi việc triển khai webrtc khi số liệu thống kê phần cứng và băng thông chỉ ra hiệu suất thấp và được cả hai bên thương lượng.

[Hardware] <- getUserMedia -> [javascript client] <- PeerConnection -> [another client] 
      <- 640x480 captured ->      <- 320x240 sent -> 

Bạn sẽ phải thâm nhập vào mã nguồn cho các tài liệu và bằng chứng về cách nó được thực hiện trong từng thực hiện, nhưng tham chiếu đến hành vi:

Từ OReilly Chapter on WebRTC:

Tin tốt lành là các công cụ âm thanh và video WebRTC hoạt động cùng với việc vận chuyển mạng cơ bản để thăm dò băng thông có sẵn và tối ưu hóa phân phối luồng truyền thông. Tuy nhiên, việc truyền dữ liệu yêu cầu thêm logic ứng dụng: ứng dụng phải theo dõi lượng dữ liệu đệm và sẵn sàng điều chỉnh khi cần thiết.

...

cơ WebRTC của âm thanh và video sẽ tự động điều chỉnh tốc độ bit của các dòng phương tiện truyền thông để phù hợp với điều kiện của liên kết mạng giữa các đồng nghiệp. Ứng dụng có thể đặt và cập nhật các ràng buộc truyền thông (ví dụ: độ phân giải video, tốc độ khung hình, vv) và các công cụ thực hiện phần còn lại — phần này rất dễ dàng.

+0

Có vẻ như không thể ép độ phân giải như tôi mong đợi. Chúng tôi đã sử dụng chế độ hậu xử lý video bằng cách sử dụng ffmpeg để chuẩn hóa độ phân giải. – j4y

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