I've been looking at MobileVLCKit for some time actually, including
submitting build script patches to make it easier to build as a framework
and getting help from the VLC devs to make a stripped-down build option
without the default proprietary codecs.
There are a few key things that have led me to prefer going a separate way:
* Build reproducibility is bad. I very frequently encounter breakage after
a fresh checkout, as the complex build system doesn't ensure that
consistent versions of all the dependencies are used -- for instance there
are a lot of patches which frequently fail to apply. If the code can't be
safely rebuilt and dropped in, upgrading and debugging are potential
nightmares.
* No Xcode-friendly packaging. The recursive autoconf-based build system
doesn't match up well with CocoaPods for packaging and building in Xcode
with desired options. I could make a podspec that uses a prebuilt binary
with specific options[1], but:
* MobileVLCKit is large, and includes lots of things we don't need. A
default framework build is literally hundreds of megabytes; the actual
linked executable size is smaller but it still adds like 40 megabytes to
the app bundle. Even with the no-scary-codecs option there's a lot of stuff
in there and you get a huge library. We could work further to strip it
down, but there may be diminishing returns.
OGVKit wraps mostly the same open-source codec libraries that MobileVLCKit
does, but the framework and playback logic is lighter-weight and the
packaging is friendlier to debugging and versioning.
Ultimately the API surface between the Wikipedia app and the player widget
will be quite small; it should be easy to swap player libraries should the
need arise. (Or replace it altogether with standard classes if we ever
allow MP4 output on the servers...!)
[1] Note I am using such a binary package for libvpx, the WebM VP8/VP9
video codec. I'm prebuilding that using libvpx's build scripts, which *are*
nice and clean and consistent, and the resulting multi-arch framework
binary is only a few megabytes.
-- brion
On Thu, Jun 25, 2015 at 3:46 PM, Corey Floyd <cfloyd(a)wikimedia.org> wrote:
Brion - have a question about existing OGG players:
Currently there is an
iOS framework called VLCKit (
https://wiki.videolan.org/VLCKit/) by the
VideoLan crew that appears to handle OGG/WebM and seems to be under
active development. It is also being used in several shipping apps
(including the VLC iOS app)
I see you forked it at sometime in the past… was there a reason why you
didn't pursue modifying it or using it as is within the iOS app to play
media files?
On Thu, Jun 25, 2015 at 1:05 PM, Monte Hurd <mhurd(a)wikimedia.org> wrote:
Brion this is so exciting! :)
On Wed, Jun 24, 2015 at 3:53 PM, Brion Vibber <bvibber(a)wikimedia.org>
wrote:
We've been stalled for years on adding media
playback to the Wikipedia
iOS app due to the impasse between Wikimedia's insistence on free formats
and Apple's insistence on only supporting patented formats.
I'm trying to route around that impasse by getting Ogg and WebM playback
up and running on iOS through a native widget library, which I've been
cleaning up to ready it for CocoaPods packaging.
Here's the high-level library:
https://github.com/brion/OGVKit
and provisional CocoaPods specifications for the low-level open-source
libraries it needs:
https://github.com/brion/OGVKit-Specs
Once I finish some further fixes and do an API cleanup (version 0.5 on
my provisional milestones <https://github.com/brion/OGVKit/milestones>)
I plan to publish my podspecs and write a patch to the Wikipedia app that
uses OGVKit to handle media playback.
Rough patch plan:
* add OGVKit as dependency
* enhance the photo carousel view to instantiate a player view for
audio/video files, just like on Android
* add content CSS to clean up those video thumbnail 'Play media' links
* add a JS click handler for 'Play media' links to launch the carousel
* add a JS click handler for <audio> and <video> elements in content
* add a bunch of libraries to the list on the about page
Ideally this should be a "surgical" patch and relatively minimal, though
an update of the Pods dir will pull in a lot of files. :)
-- brion
_______________________________________________
Mobile-l mailing list
Mobile-l(a)lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mobile-l
--
Corey Floyd
Software Engineer
Mobile Apps / iOS
Wikimedia Foundation