Page MenuHomePhabricator

Talk to Brightcove folks about improvements/plugins needed for VideoJS
Closed, ResolvedPublic

Description

Will check in with folks at Brightcove when I'm next in SF (late October 2015). Various things to check in on noted on T100106

Event Timeline

brion created this task.Oct 20 2015, 6:34 PM
brion claimed this task.
brion raised the priority of this task from to Normal.
brion updated the task description. (Show Details)
brion added a project: Wikimedia-Video.
brion added a subscriber: brion.
Restricted Application added a subscriber: Aklapper. · View Herald TranscriptOct 20 2015, 6:34 PM
brion closed this task as Resolved.Oct 29 2015, 9:09 PM

Met with Phil, Matt, & Steve. Good meeting! A few notes:

communication:

  • 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.

ogv.js integration:

  • 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!

adaptive streaming:

  • 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

audio playback

  • 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

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

Encoding/transcoding:

  • 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