Kiểm tra xem trình duyệt / nền tảng hỗ trợ chụp màn hình thông qua `getDisplayMedia`


8

Chúng tôi có thể yêu cầu một luồng phương tiện đến màn hình hoặc cửa sổ thông qua navigator.mediaDevices.getDisplayMedia(). Tuy nhiên, điều này ngay lập tức nhắc người dùng quyết định sử dụng kiểu chụp nào. Tôi cần kiểm tra xem trình duyệt / nền tảng có hỗ trợ chụp màn hình hay không.

Tất nhiên, có thể kiểm tra 'getDisplayMedia' in navigator.mediaDevices, nhưng điều này chỉ cho chúng tôi biết API có được trình duyệt hỗ trợ hay không. Cụ thể, trên FF và Chrome trên Android, API được xác định và tôi có thể gọi getDisplayMedia(), nhưng nó luôn trả về NotAllowedErrorlỗi ngay lập tức ( theo dự kiến: theo caniuse , các trình duyệt di động chưa hỗ trợ getDisplayMedia.)

Tiếp theo, tôi đã thử kiểm tra navigator.mediaDevices.getSupportedConstraints(). Tuy nhiên, FF di động của tôi trả về cùng một đối tượng như FF máy tính để bàn của tôi. Đặc biệt, navigator.mediaDevices.getSupportedConstraints().mediaSourcetruetrong cả hai trường hợp. Cuối cùng, dữ liệu được trả về navigator.mediaDevices.enumerateDevices()cũng không giúp tôi. Tôi chỉ nhận được một ID thiết bị và nhóm mà tôi không thể diễn giải theo bất kỳ cách nào (phải không?).

Có thể phát hiện xem có chụp màn hình qua hay không getDisplayMediađược hỗ trợ trước?

( Lưu ý : Câu hỏi và trả lời này có vẻ khá giống nhau, nhưng getUserMediađã cũ và đã khá cũ)


Bạn đang sử dụng HTTPS?
str

@str Vâng, tôi đây. Cũng lưu ý rằng câu hỏi này không phải là "Tôi không thể sử dụng getDisplayMediatrên thiết bị di động". Điều đó là tốt cho tôi. Tôi chỉ muốn kiểm tra xem nó có được hỗ trợ hay không .
Lukas Kalbertodt

Không getDisplayMedia trả lại một lời hứa?
vui vẻ

@aksappy Vâng. Tại sao? Tôi không thấy nó sẽ giúp tôi như thế nào. Nó sẽ khắc phục ngay lập tức một lỗi (trên thiết bị di động) hoặc người dùng được trình duyệt nhắc nhở (máy tính để bàn, nếu được hỗ trợ).
Lukas Kalbertodt

Chà, đó là nhiều hơn về một cuộc trò chuyện bắt đầu :-) Bạn đã xem MediaRecorder chưa? Nó giải quyết trường hợp sử dụng của bạn bằng phương thức isTypeSupported.
aksappy

Câu trả lời:


6

Thật không may, không có cách trực tiếp để phát hiện tính năng xem getDisplayMedia có hoạt động trên các trình duyệt đó hay không.

Tất cả những gì bạn có thể làm hôm nay là trình duyệt đánh hơi chuỗi UA để phát hiện bạn không ở trên thiết bị di động, nơi thiếu hỗ trợ .¹

Tôi đã gửi một vấn đề về thông số kỹ thuật dựa trên câu hỏi của bạn, để xem getDisplayMedia có tốt hơn undefinedkhi không được hỗ trợ hay không.


1. caniuse tuyên bố Opera Mobile có hỗ trợ, nhưng xuất hiện này không phải như vậy khi tôi kiểm tra nó .


1
Vui lòng upvote báo cáo lỗi crom này để nhận lỗi cố định này.chromium.org/p/chromium/issues/detail?id=1038244#c2
jpodwys
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.