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@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@wikimedia.org> wrote:
Brion this is so exciting! :)

On Wed, Jun 24, 2015 at 3:53 PM, Brion Vibber <bvibber@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:

and provisional CocoaPods specifications for the low-level open-source libraries it needs:

Once I finish some further fixes and do an API cleanup (version 0.5 on my provisional 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@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mobile-l





--
Corey Floyd
Software Engineer 
Mobile Apps / iOS 
Wikimedia Foundation