Met with Phil, Matt, & Steve. Good meeting! A few notes:
- They set me up on the VideoJS Slack instance so I can ping with questions as needed; some of them also still hang out on the old IRC channel. They may set up another public channel soon as well.
- for ogv.js integration we may want a combination of a 'tech' *and* a 'source' plugin. 'Source' plugins are new; we would definitely use a source plugin for doing adaptive streaming switching; will look into best way to split things up for ogv.js
- eg we might want to conceptually split ogv.js into 'canvas/web-audio player' and 'ogg/webm demuxer+decoders'. Or the 'source' might just handle cpu-usage-based resolution switching. Not yet 100% sure, need to research some more.
- they noticed the background tab throttling bug on my demo too. ;) need to improve the timer usage!
- for VP8/VP9 adaptive source switching, there are dash.js and shaka.js-based 'source' plugins
- shaka probably has better webm/vp9 support.
- dash.js is notoriously large, but is being refactored to be more modular
- check into details of dash manifest format & creation... do we need to list the keyframe-to-byte mappings in the manifest etc?
- need to confirm whether our combined video+audio files will work or if we need to create separate video-only and audio-only streams
- not yet sure if it's possible to hack up dash.js or shaka to talk with ogv.js, or should implement separate adaptive switching for ogv
- more important to have a reliable CPU-speed-based downratchet/upratchet for ogv.js, rather than network conditions
- there is current support for taking an <audio> element and adapting it with videojs skin controls etc
- but things may assume a poster image still; make sure sizing is correct
- there may be some custom skins aimed at audio-only playback; check out the state of the art
Manual resolution switching
- https://github.com/kmoskwiak/videojs-resolution-switcher appears to be updated for videojs 5
Potential issues with doing popup/overlay (as with our current popup or with MultimediaViewer integration)
- cloning a pristine original <video> from the document into an overlay should work fine as long as we add the videojs setup only after the copy into the overlay
- this should let us have a basic inline player for no-JS case as well as providing a good player for our zoomed view
- make sure to destroy the instance at end; DOM+JS+event handles doesn't always GC well and may leave stuff
Usage of ES6 vs vanilla JS in plugins?
- either should work
- ES6 easier if we need to extend core classes
- may as well learn the ES6 stuff since will probably end up contributing patches to their core anyway ;)
Crazy future ideas: what if we want hyperlinks in our video?
- they would be interested in a good full-featured plugin supporting that, should we happen to make one in future :D
- since Brightcove also happens to run a transcoding business (Zencoder) they would be happy to help us with our transcode problems. ;)
- they're pretty sure they could support us on their end if we can figure out the options on our end -- keep them on the list for looking at ways to do 3rd-party transcoding in future.
- a good abstraction for transcoding backends would be very useful and allow us to do some testing
- commoditization of the transcode interface may be key for getting community approval for *any* 3rd-party service