3 ms·
Regarding browser extensions, the Firefox "webextensions" API is (mostly) compatible with Chromium's, so with relatively little effort you could target both the
by gnomewascool 8y ago
Regarding browser extensions, the Firefox "webextensions" API is (mostly) compatible with Chromium's, so with relatively little effort you could target both the Firefox and Chromium families of browsers.
Firefox compatibility is valuable because Firefox extensions don't have to be distributed through the Mozilla add-on store (they do need to be signed by AMO, but provided your extension isn't doing anything illegal, that should not be an issue).
Finally, you could try redistributing unbranded Firefox or Chromium with your extension pre-installed. Waterfox (a Firefox fork) can have DRM — it's disabled by default, but it can be switched on — and I don't think they put a great deal of effort into it, so I think that your "version" of Firefox could also easily have DRM. (I have no idea whether the same holds for Chromium.)
- ehsankia 8y agoI was curious about this too, and I wonder if OP can clarify what they mean by "reduced features". What exactly is it that they want to do, which requires them to create a whole new browser, vs just creating a website/extension. I would much rather have a webapp than have to download a whole new browser just to watch videos with a friend. Most of the stuff listed on the github (WebRTC, WebSocket) are just normal web technologies. The only other thing I see is "Discord Rich Presence".
- nyxxie 8y agoThis. I’m currently working on a project to do what OP is doing, and this is almost certainly the most painful route to go down. All of this could be done with WebRTC, and you get the bonus that it’s even p2p so you don’t even have to handle video content yourself if you don’t want to (if you do, you can mix in media servers like Kurento or Janus if you want). To further sell this approach, I built v1 of the streaming pipeline in like 2 weeks.
- smaddock 8y agoSorry for the late reply. Building Metastream as a web browser instead of a web extension was a complexity burden created solely by myself. One of the main requirements I wanted was the ability to use the app with as little centralized dependencies as possible. P2P is the primary way to connect to users with the app, but even that requires a centralized signaling solution which is prone to downtime. To mitigate this, users can also directly connect to an IP address with the appropriate ports forwarded. Listening on a socket is not supported by a web extension at this time. Additionally, some actions on the web require a "user gesture" to be performed such as fullscreening a video. I created an auto-fullscreen feature by simulating a user gestured mouse click. It also only fullscreens within the frame of the window instead of the entire screen. [1] Other features not possible with a web extension/app include local file reading (potential future feature) and Discord Rich Presence (currently implemented). [1] https://github.com/electron/electron/pull/17203 https://github.com/electron/electron/pull/17203
- gnomewascool 8y agoThanks for the reply! That makes sense and it's interesting to see the limitations of the "web extension" framework. The following isn't meant to try to convince you to use any particular solution (I don't have any skin in the game), just some ideas in case you get fed up even more by the problems with implementing DRM in your own browser. Listening to a socket and reading local files is possible with "Native messaging"[1]. In brief you have a small application running in the background, outside the browser, which can listen to sockets or read local files, and your browser extension communicates with it. This does bring added complexity and might (haven't tested) bring additional latency, possibly making it unacceptable. [1] https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_messaging https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Web...