I spent the weekend hacking at integration of my ogv.js JavaScript Ogg media player into TimedMediaHandler's embedded player widget. Patch set in progress: https://gerrit.wikimedia.org/r/#/c/145756/
It's pretty much working in Safari 7 and IE 10/11, but needs various tweaks and fixes still. Some older browser versions should be supportable using a Flash cross-compile, but I haven't got that running in the embedding yet.
Here's a wiki running the patch with some sample files: https://ogvjs-testing.wmflabs.org/
In the process I've noticed several issues with TimedMediaHandler and its dependencies when running on cutting-edge infrastructure; various bugs filed:
HHVM issues: * https://bugzilla.wikimedia.org/show_bug.cgi?id=67937 - players don't display (patch) * https://bugzilla.wikimedia.org/show_bug.cgi?id=67973 - job runner doesn't work
Ubuntu Trusty video transcoding issues: * https://bugzilla.wikimedia.org/show_bug.cgi?id=67953 .ogv transcodes broken (upstream; workaround) * https://bugzilla.wikimedia.org/show_bug.cgi?id=67951 .webm transcodes broken (upstream)
And a Vagrant configuration issue: * https://bugzilla.wikimedia.org/show_bug.cgi?id=67930 - no job runner for TMH role
-- brion
This is impressive Brion, really nice work. I can actually play multiple 160p clips at the same time on my iPhone 5S. I have no controls in iOS yet but other than that.. Really getting somewhere.
DJ
On Mon, Jul 14, 2014 at 6:31 AM, Brion Vibber bvibber@wikimedia.org wrote:
I spent the weekend hacking at integration of my ogv.js JavaScript Ogg media player into TimedMediaHandler's embedded player widget. Patch set in progress: https://gerrit.wikimedia.org/r/#/c/145756/
It's pretty much working in Safari 7 and IE 10/11, but needs various tweaks and fixes still. Some older browser versions should be supportable using a Flash cross-compile, but I haven't got that running in the embedding yet.
Here's a wiki running the patch with some sample files: https://ogvjs-testing.wmflabs.org/
In the process I've noticed several issues with TimedMediaHandler and its dependencies when running on cutting-edge infrastructure; various bugs filed:
HHVM issues:
- https://bugzilla.wikimedia.org/show_bug.cgi?id=67937 - players don't
display (patch)
- https://bugzilla.wikimedia.org/show_bug.cgi?id=67973 - job runner doesn't
work
Ubuntu Trusty video transcoding issues:
- https://bugzilla.wikimedia.org/show_bug.cgi?id=67953 .ogv transcodes
broken (upstream; workaround)
- https://bugzilla.wikimedia.org/show_bug.cgi?id=67951 .webm transcodes
broken (upstream)
And a Vagrant configuration issue:
- https://bugzilla.wikimedia.org/show_bug.cgi?id=67930 - no job runner for
TMH role
-- brion _______________________________________________ Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
On Mon, Jul 14, 2014 at 1:35 PM, Derk-Jan Hartman < d.j.hartman+wmf_ml@gmail.com> wrote:
This is impressive Brion, really nice work. I can actually play multiple 160p clips at the same time on my iPhone 5S.
Thanks! :)
Note that performance in Safari should improve further on iOS 8 and OS X 10.10, which enable WebGL in the browser -- this approximately halves the CPU requirements by combining YUV->RGB colorspace conversion into the drawing step on the GPU.
Who ever said JavaScript had to be slow, eh? ;)
I have no controls in iOS yet but other than that.. Really getting somewhere.
Currently seeking and volume control are not supported so the controls are indeed very minimal... I'm not quite sure why the resolution selector doesn't show on the control bar, I'll have to poke it some more. (Maybe it depends on seeking?)
I think I can partially implement seeking in Safari since it actually progressively downloads the entire file into a memory buffer (!) but doing it properly will require either a server-side addition to do streaming chunks, or MPEG DASH-style pre-splitting of a/v streams into small files that can be individually loaded via a series of small XMLHTTPRequest hits (see https://bugzilla.wikimedia.org/show_bug.cgi?id=42591 and links for background on MPEG DASH and the WebM streaming profile; presumably I'd either have to implement WebM decoding in addition to Ogg or devise a DASH profile for the Ogg container).
-- brion
DJ
On Mon, Jul 14, 2014 at 6:31 AM, Brion Vibber bvibber@wikimedia.org wrote:
I spent the weekend hacking at integration of my ogv.js JavaScript Ogg media player into TimedMediaHandler's embedded player widget. Patch set
in
progress: https://gerrit.wikimedia.org/r/#/c/145756/
It's pretty much working in Safari 7 and IE 10/11, but needs various
tweaks
and fixes still. Some older browser versions should be supportable using
a
Flash cross-compile, but I haven't got that running in the embedding yet.
Here's a wiki running the patch with some sample files: https://ogvjs-testing.wmflabs.org/
In the process I've noticed several issues with TimedMediaHandler and its dependencies when running on cutting-edge infrastructure; various bugs filed:
HHVM issues:
- https://bugzilla.wikimedia.org/show_bug.cgi?id=67937 - players don't
display (patch)
- https://bugzilla.wikimedia.org/show_bug.cgi?id=67973 - job runner
doesn't
work
Ubuntu Trusty video transcoding issues:
- https://bugzilla.wikimedia.org/show_bug.cgi?id=67953 .ogv transcodes
broken (upstream; workaround)
- https://bugzilla.wikimedia.org/show_bug.cgi?id=67951 .webm transcodes
broken (upstream)
And a Vagrant configuration issue:
- https://bugzilla.wikimedia.org/show_bug.cgi?id=67930 - no job runner
for
TMH role
-- brion _______________________________________________ Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
On Sun, Jul 13, 2014 at 9:31 PM, Brion Vibber bvibber@wikimedia.org wrote:
https://gerrit.wikimedia.org/r/#/c/145756/
Here's a wiki running the patch with some sample files:
https://ogvjs-testing.wmflabs.org/
Status update: * Resolution switching is now available * Automatic selection of 160p or normal-sized source based on a JavaScript microbenchmark[1] * Fixes for JavaScript player in iOS 7 Safari (desktop view) * Added IE 9 support with Flash player version[2] * Switched IE 10/11 to use the Flash version for more consistent performance on low-end machines[3]
I hope to do some work on integration into MobileFrontend during Wikimania, probably with a temporary lightweight UI. If interested in helping or testing, come bug me during the hackathon in person or via IRC!
[1] The benchmark heuristic for overriding source selection logic is pretty hacky, but gets playback working on more of my slower test devices while usually defaulting the faster ones to larger sizes.
[2] I'm not sure if IE 6/7/8 support is possible; the player JS in TimedMediaHandler doesn't seem to initialize. Not sure if it's blacklisted or if I've just failed the detection logic somewhere.
[3] IE 10/11 can run the entire decoder and video playback in JavaScript but require a Flash shim for audio; the combination of JS and Flash adds some overhead versus running all in Flash, especially on older or slower machines. Note that IE's developer status pages indicate Web Audio support is "in development", so a future IE version should drop the Flash requirement. Until then... I find decoding free formats in Flash very satisfying somehow. :D
In the process I've noticed several issues with TimedMediaHandler and its
dependencies when running on cutting-edge infrastructure; various bugs filed:
These are pretty much all fixed now except the ffmpeg2theora-and-avconv-broken-in-trusty issues, which can work around. The new job runner as provided in MediaWiki-Vagrant runs the transcode jobs automatically, and transcodes and playback both now work running under HHVM.
Yay! Thanks to everybody who helped me with Vagrant and Labs-Vagrant.
-- brion
wikitech-l@lists.wikimedia.org