I would to develop video streaming usign WebRTC. I have not heard about the browser compatibilities. Does it work in IE & MAC systems? Please advice the pros & cons of it.
It works great on Mac systems using Firefox or Chrome. Safari doesn't support WebRTC yet.
IE doesn't support WebRTC also. Nevertheless, Microsoft claimed that IE will support WebRTC when standard had been finalized.
Regarding IE, take a look here, also: Which version of Microsoft Internet Explorer support WebRTC?
Rather than [just] providing an answer that will surely go out of date at some point, let me point you to CanIUse.com:
http://caniuse.com/#search=webrtc
Currently, as of 2015-08-14, WebRTC is still completely missing from Safari (OS X & iOS) and from IE (including Edge).
Safari
Apple announced support for WebRTC in Safari 11.
You can download the latest beta version of Safari 11 at the following link:
(You need to sign in with your Apple ID) https://developer.apple.com/safari/download/
Microsoft Edge
Edge supports webRTC with the help of adapter.js.
Internet explorer
You'll need a 3rd party plugin, like Skylink or Temasys.
Related
I am trying to use mediaRecorder API and make it run on maximum of browsers
video/webm;codecs=vp8,opus : that works fine on chrome and Firefox.. but not on Safari
video/mp4;codecs:h264 : works on Safari and Chrome.. but not on Firefox
It looks like Safari is now able to play webm.
What would be the mime type to use to make it run on both 3 browsers ?
I've been attempting the same thing and it is painful to say the least.
I'm able to use MediaRecorder to record video across Chrome, Firefox, Edge, and Safari. BUT the resulting videos do not playback on all browsers.
Safari - records in mp4 and mp4 will playback on all browsers
Chrome & Edge - I'm recording with mimeType: "video/webm;codecs=vp9", which will playback on Chrome, Firefox, and Edge, but not Safari.
Firefox - I'm using the default. It will playback on Chrome, Firefox, and Edge, but not Safari.
Supposedly Safari will playback webm with macOS Big Sur 11.3. I need to upgrade to test this.
Unfortunately webm is still not supported by iOS, so I'm looking into the Cloudconvert API to convert webm videos to mp4 before storing in S3.
Other suggestions welcome.
You'll need to use the MediaRecorder.isMediaTypeSupported API to find out what the browser you are using supports. See this open PR for details.
That does not help with playback however.
You've stumbled into an electropolitical food fight.
Sad to say, there's no commonality of codecs between browsers. You won't be able to find a common codec. Apple (Safari) is firmly in the H.264 / AAC world, the world of MP4.
Chrome, but not open-source Chromium, supports H.264 (which carries a patent burden). The fully open source Chromium browser does not. Firefox, via an automatically installed plugin from OpenH264.org, does, but it only supports H.264's constrained baseline version, not the fancier versions. Use MIME type video/webm; codecs="avc1.42E01F" and you'll be fine in Firefox and Chrome.
Microsoft new Edge supports the same stuff as Chrome.
WebRTC is rigged to allow endpoints to negotiate codecs with each other. In my opinion this is a kludgey way to patch this electropolitical squabble.
This is not a good situation. But it's Q1CY2021 reality.
as a simple answer that I found since it's not simply out there. Use a library like below to record in mp3. It's not supported by browser MediaRecorder natively, but libraries make it easy to encode to mp3
and then you have a blob or file that can be played in any browser and even mobile devices like ios
https://github.com/closeio/mic-recorder-to-mp3
My web extension works with Chromium browsers, Firefox, Edge, but as I understand - it is impossible now just to open the same codebase with Safari browser?
Update 2021
The Safari support for WebExtensions was released in 2021 and is available from Safari 14 (shipped with macOS Big Sur). WebExtensions for Safari are published in the App Store. Documentation here: https://developer.apple.com/documentation/safariservices/safari_web_extensions
Original answer
We cannot possibly know this for sure, but Apple is currently not planning to support (a version of) the WebExtensions API. The name of the standard/specification is Browser Extension.
Apple is not part of the W3C group which attempts to make a cross browser standard: https://www.w3.org/community/browserext/participants
For more general info on the Browser Extension W3C working group, see
https://browserext.github.io/browserext
The provisional spec can be found here: https://browserext.github.io/browserext/
In macOS Big Sur, Safari will support the WebExtensions API:
New support for the WebExtensions API and migration tools allows developers to bring Chrome extensions to Safari — letting you personalize your browsing experience with new Safari extensions from your favorite developers.
I am trying to make an online examination portal. When students start the exam, their webcam will start automatically and record the stream live and store in the server. Invigilators will either watch the students live or they can watch the saved live streams later.
I researched about this and found WebRTC as a possible solution along with a gateway server like Kurento. But later found out that WebRTC is not supported in Safari, which is a setback! My application should run successfully in web portal in any modern browsers which includes safari and also in android or iphone.
So can anyone suggest a possible solution to my problem? Which technology should I use that can support all browsers and OS?
Also, it would be helpful if you can provide links to good documentation or tutorials.
Note from the future (2020): This answer really isn't accurate anymore.
WebRTC is one problem... capture from the camera with getUserMedia is another. Safari doesn't support either.
There is no video capture API in Safari currently. The only thing you can do is make a native app for iOS.
Worse yet, because of Apple's restrictive policies, alternative browsers, such as Chrome, are crippled on iOS as they aren't allowed to use their own browser engines.
Use standards based technologies like getUserMedia and WebRTC for your primary web-based application. If you decide that the economics of your situation enable it, you can make an iOS app to work alongside until Apple decides to participate in modern browser standards like everyone else.
You can use Mediadevices.getUserMedia (https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia) to capture webcam stream on browser (chrome and firefox).
To play with webcam stream on safari, you would have to use a pollyfill - https://github.com/Temasys/AdapterJS
To record the video/audio stream, you can make use of Media recorder api https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder (Note : recording stream is still a challenge in Safari as there is no support/pollyfill. However, it works perfectly on Chrome and Firefox latest versions).
Helpful demonstrations :
https://webrtc.github.io/samples/
https://mozdevs.github.io/MediaRecorder-examples/index.html
https://codepen.io/collection/XjkNbN/
https://hacks.mozilla.org/2016/04/record-almost-everything-in-the-browser-with-mediarecorder/
Is there any solution to run Web Record RTC on safari and ios,androind browser?
I have implemented fully code for video recording in php but it could not work in safari & ios,android browser.
Do Anyone have idea that how to enable usermedia in safari & ios, androind browser.
Safari on the Mac and iOS does not support webRTC. In the browser or webview, webRTC is not supported, which means that getUserMedia is not available, which means that you can't stream video to your web RecordRTC.
If you want to do webRTC, you will have to write native code, or there is a cordova plugin for ios at https://github.com/eface2face/cordova-plugin-iosrtc - this is on the bleeding edge right now, so be ready for some frustration
It is supported on android. The native android browser may or may not work, depending on what your device is. Install chrome and it will work. If you are doing Android webapps, you should use the crosswalk plugin, as it basically provides chrome instead of webview, and then you know that webRTC support is there.
I am trying to setup up video calling in my webapp using Sinch. The application works well on my Chrome (50.0.2661.102 64 bit) but a friend using windows (same version chrome but 32 bit) gets a NavigatorUserMediaError with a reason : DevicesNotFoundError.
I tried using mozilla, vivaldi and IE but non of them works. The error is in the sinch.min.js file and I am using the latest version from their repository : https://cdn.sinch.com/latest/sinch.min.js
Can someone please help me fix these issues?
Also, are there any javascript libraries to help prevent cross-browser compatibility issues while using webRTC.
Thanks
Only WebRTC browsers work with sinch
The NavigatorUserMediaError error with err.name=DevicesNotFoundError is a Chrome specific error and it's quite common. It happens when:
you’re requesting a video track through constraints but the user does not have a webcam
you request an audio track but there is no attached recording device or it's disabled at the OS level (possible in Windows and some drivers do it automatically if there's no microphone inserted in the mic jack)
DevicesNotFoundError will be replaced by the spec compliant NotFoundError in Chrome 64.
Source: Common getUserMedia() Errors